Docker的默认网络模式,工作在第二层,也就是数据链路层。
容器和宿主机共享一个Network命名空间,容器不会生成虚拟的网卡、也不会配置IP地址,而是与宿主机共享网络端口和IP地址。
配置Host模式的基本命令如下。
docker run -itd --network host 镜像名称[:镜像标签]
所有容器共享一个Network命名空间,新建的容器不会创建自己的虚拟网卡和IP地址,而是和已有的容器共享网络端口和IP地址,除网络外,其他资源也还是互相隔离的。
配置Container模式的基本命令如下。
docker run -itd --network container 镜像名称[:镜像标签]
容器有单独的命名空间,但是没有虚拟网卡、IP地址等网络配置,只有一个回环地址。也就是说,不能访问外部网络,也不能被外部网络访问,这种模式常用于测试。
配置Container模式的基本命令如下。
docker run -itd --network none 镜像名称[:镜像标签]
用户可以自定义创建一个虚拟网桥,指定网桥的网段范围。只有先创建了自定义网桥,才能够给容器分配指定的IP地址。
配置自定义模式的基本流程如下。
# 先自定义网络,设置IP范围
docker network create --subnet=子网范围 --opt "com.docker.network.bridge.name"="网卡名称" 网络名称
# 在创建并运行容器的同时,指定容器的IP
docker run -itd --network 网络名称 --ip 自定义IP地址 镜像名称[:镜像标签]
Cgroups是Linux内核实现资源限制的一种机制,而Docker正是通过Cgroups来进行资源的限制,主要限制包括CPU资源限制、内存资源限制、磁盘资源限制,其中最为常用的是CPU和内存的资源限制。
Linux通过CFS (Completely Fair Scheduler, 完全公平调度器)来调度各个进程对CPU的使用,默认的CPU调度时间是100000微秒(100毫秒)。CFS的调度时间范围是1毫秒至1秒,也就是1000微秒至1000000微秒,CPU的使用时间不得小于1000微秒。
docker run -itd --name 容器名称 --cpu-quota 使用时间 镜像名称[:镜像标签]
通过–cpu-share来设置容器对CPU的使用权重,通常是1024的倍数,默认值是1024。只有多个容器同时设置了权重才能够生效。
docker run -itd --name 容器名称 --cpu-share 使用权重 镜像名称[:镜像标签]
通过–cpuset-cpus来设置容器所使用的CPU核,CPU的核索引从0开始,指定多个核则用逗号分隔。
docker run -itd --name 容器名称 --cpuset-cpus 核索引 镜像名称[:镜像标签]
通过–memory来设置容器的内存大小,数值后需要带单位,比如M表示MB、G表示GB。
docker run -itd --name 容器名称 --memory 内存大小 镜像名称[:镜像标签]
通过–memory-swap来设置容器的交换空间大小,要和–memory一起使用,并且设置的数值大小要包括容器的内存大小。比如–memory 512M --memory-swap 1G的含义是:容器的物理内存是512MB、可使用的交换空间是1GB-512MB=512MB。
docker run -itd --name 容器名称 --memory 内存大小 --memory-swap 交换空间大小 镜像名称[:镜像标签]
通常情况下,不会限制容器对磁盘资源的使用。通过–device-read-bps和–device-write-bps来设置对容器的读数据、写数据的速度。
docker run -itd --name 容器名称 -device-read-bps 磁盘设备:速度大小 --device-write-bps 磁盘设备:速度大小 镜像名称[:镜像标签]