一、网络
1.1 概念
- 每创建一个容器,则会在容器内部生成一个docker0作为该容器的网关
- 虚拟网关一般是与物理网卡绑定,负责做NAT地址转换、端口映射等功能
- 查看虚拟网卡:ifconfig,此时会看到docker0的信息
1.2 网络模式
- 一般新创建的容器网段固定为172.16.0.0/16网段(也可以自定义)
- 下方指定命令为两个横杠,页面原因显示不正确:- -net
模式 | 命令 | 释义 |
bridge | –net=bridge | 默认模式,每个容器都有独立网卡、IP、端口等资源 |
container | –net=container:另外容器ID/名字 | 桥接模式,新容器与另外一个容器共用网卡等资源 |
host | –net=host | 桥接模式,新容器与宿主机共用网卡等资源 |
none | –net=none | 单机模式,新容器没有网络功能 |
自定义模式 | \ | 还是上面四种模式之一,不过网段可以自定义 |
1.3 相关命令
#查看网络列表 docker networks ls #创建一个名字为han的网段,默认为bridge模式,docker network ls可以查看到配置的网段 docker network create --subnet=172.13.0.0/16 han #后台启动容器指定网络模式与IP地址(需要用户先行创建该网段) docker run -itd --name test1 --network bridge --ip 172.13.0.10 centos:7 bash #查看容器端口映射情况 docker port 容器ID #新创键容器时,将容器的80端口映射到宿主机的1314端口(小p指定端口,大P随机端口 docker run -itd -p 1314:80 nginx:lnmp bash
二、数据
2.1 文件传输
#将宿主机文件拷贝到容器对应位置(只能复制,无法自动解压) docker cp 宿主机文件 容器ID:路径
2.2 数据卷挂载
- 将容器的数据保存在宿主机或其他的位置,提高数据的安全性
#创建数据卷,并将宿主机的磁盘挂载到容器中(宿主机借给容器) docker run -it --name test1 -v 宿主机路径:容器路径 cento:7 bash #创建一个test1的容器,并建立两个数据卷目录 docker run -it --name test1 -v /data1 -v /data2 centos:7 bash #创建一个test2容器,并将test1的所有数据卷都挂载到本地容器 docker run -it --name test2 --volumes-from test1 centos:7 bash #将数据卷容器挂载到一个容器 docker run -itd --volumes-from 数据卷容器 --name 本地容器 centos:7 bash
三、资源分配管理
3.1 概念/功能
- 每个容器都相当于一个进程
- docker利用cgroup进行资源控制
- 是容器隔离6个命名空间的手段
3.2 cgroup四大功能
- 资源限制
- 资源统计
- 任务控制
- 优先级分级
3.3 资源控制
3.3.1 CPU配置
#概念 cpu周期:一般1s为一个周期 利用率:在一个周期内运行的时间 cpu分配:一个周期内允许容器最大运行的时间 #命令 #设置调度周期(1ms-1s) --cpu-period 调度周期 #设置有效范围(1000-100w微秒) --cpu-quota 有效时间 #容器比例分配(权重是与另外一个容器对比) --cpu-shares 权重 #容器绑定内核 --cpuset-cpus 第几个内核 #动态监控资源使用情况 docker stats
3.3.2 内存配置
#限制最大使用的内存数 --m #限制交换分区大小(至少是内存两倍,因为要减去内存的大小,才是交换分区真实的大小) --memory-swap
3.3.3 读写限制
#设置优先级权重(默认为500) --blkio-weight 权重 #bps:每秒读写的数据路 #限制某个容器读的bps --device-read-bps 磁盘:数字 #限制某个容器写的bps --device-write-bps 磁盘:数字 #iops:每秒I/O的次数 #限制某个容器读的iops --device-read-iops 磁盘:数字 #限制某个容器写的iops --device-write-iops 磁盘:数字 例:docker run -it --device-write-bps /dev/sda:5MB centos:7
3.4 镜像大小
- 原理:镜像是一层一层的,层数越少,镜像越轻量级
四、思维导图