Docker 学习笔记
1、云计算
云计算 – 计算机资源集中起来,并放在网络上。
名称 | 定义 | 例子 |
---|---|---|
IaaS | CPU 磁盘 网卡 | 阿里云 |
Paas | 把操作系统(例如Windows、Linux)装好,把数据库软件装好,我再来使用 | 新浪云、Dokcer |
SaaS | 具体的应用如FTP装好 |
那么如何部署多样化多层次的云计算服务?手工?不现实。需要自动化,: 依靠软件和平台,负责对资源进行快速调用和集中管理。
2、虚拟化
Hypervisor 完成物理资源虚拟化的操作。是一种运行在基础物理服务器硬件之上的软件层。然后我们在虚拟出来的资源上安装操作系统。
两种运行方式:
- hypervisor 直接运行在物理机上,虚拟机运行在hypervisor上
- 物理机上先安装OS,在OS上安装hypervisor,像VMware、KVM、Xen、Virtual Box,都属于Hypervisor。
虚拟机的痛点在于:开发到测试环境的迁移困难。1. 新建虚拟机,浪费资源。2. 不新建虚拟机,开发环境运行的代码迁移到测试环境可能会出错。
3、容器
容器,操作系统级别的虚拟化技术。是轻量级虚拟化,隔离出的环境有自己的文件,IP,主机名。
3.1、容器和虚拟化的区别
容器是一个代码和环境的集合,多个容器可同时运行同一台服务器上,共享操作系统的内核资源。
虚拟机在物理层面分离出一个操作系统,多个虚拟机运行在同一台服务器时,每个虚拟机需要有一个完整的操作系统。
4、虚拟化技术分类
TODO
5、Docker 网络
docker 容器如何连网:
- docker 虚拟出一个docker容器网桥。
- 容器启动时,会根据docker网桥的网段分配给容器一个IP地址-ContainerIP。
- Docker网桥是每个容器的默认网关。
- 同一个宿主机的容器都接入一个网桥,容器之间能通过容器的ContainerIP直接通信。
dockers网桥是虚拟的,外部无法寻址,所以外部网络无法直接访问ContainerIP,docker提供宿主机端口到容器端口的映射使外部可以访问容器。
[root@k8s-master volumes]# docker info | grep Net
Network: bridge host ipvlan macvlan null overlay
6、docker 数据卷
数据卷(Data Volumes)是一个可供一个或多个容器使用的特殊目录,它将主机操作系统目录直接映射进容器。
- 数据持久化
- 容器之间数据共享
- 删除容器时数据卷不会被删。
- 更改立即生效,且不包含在镜像的更新中
注意事项
挂载数据卷,最好是通过 run而非create/start创建启动容器,create/start命令创建启动容器后,再挂载数据卷相当麻烦,要修改很多配置文件,但并非不可以。
docker 官网推荐尽量进行目录挂载,不要进行文件挂载
6.1 、数据卷容器
多容器之间持续共享一些持续更新的数据,最简单的方式是使用数据卷容器。它也是一个容器,但是是钻们用来提供数据卷供其他容器挂载。
docker run -itd \
--name mysql \
--restart always \
--privileged=true \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=admin \
mysql:5.7.31 \
--character-set-server=utf8 \
--collation-server=utf8_general_ci