南京科技网站设计多少钱,wordpress获取指定目录的文章,自己做网站卖视频,企业网络推广哪家公司好安装Docker时#xff0c;它会自动创建三个网络#xff0c;bridge#xff08;创建容器默认连接到此网络#xff09;、 none 、host
docker网络模式
Host
容器与宿主机共享网络namespace#xff0c;即容器和宿主机使用同一个IP、端口范围#xff08;容器与宿主机或其他使…安装Docker时它会自动创建三个网络bridge创建容器默认连接到此网络、 none 、host
docker网络模式
Host
容器与宿主机共享网络namespace即容器和宿主机使用同一个IP、端口范围容器与宿主机或其他使用host模式的容器不能用同一个端口、路由、iptables规则等网络资源
设置此模式
docker run --networkhost
Container
和指定已存在的容器共享网络namespace即这两个容器使用同一个IP、端口范围容器与指定的容器不能用同一个端口、路由、iptables规则等网络资源。
设置此模式
docker run --networkcontainer:容器名|容器ID
None
每个容器都有独立的网络namespace但是容器没有自己的eth0网卡、IP、端口等网络资源只有lo网卡
设置此模式
docker run --networknone
Bridge
docker默认网络模式使用此模式下的每个容器都有独立的网络命名空间namespace即每个容器都有独立的IP、端口范围每个容器可以用同一个端口、路由、iptables规则等网络信息
设置此模式
docker run [--networkbridge]可不指定默认的
自定义网络
可以自己定义创建一个网段、网桥、网络模式从而可自定义容器的IP来创建容器
创建自定义网络
docker network create --subnet 自定义网段 --optcom.docker.network.bridge.name自定义网桥名 自定义网络模式名
docker run --network 自定义网络模式名 --ip 自定义容器IP
查看docker网络列表
docker network ls 或 docker network list 资源控制
Docker 通过 Cgroup 来控制容器使用的资源配额包括 CPU、内存、磁盘三大方面 基本覆盖了常见的资源配额和使用量控制。 cgroup 资源限制限制容器进程对CPU、内存、磁盘IO等资源的最大使用量
1、CPU资源控制
cd /sys/fs/cgroup/cpu/docker/容器id
cat cpu.cfs_quota_us
表示该cgroups限制占用的时间微秒默认为-1表示不限制。 如果设为50000表示占用50000/10000050%的CPU。
cat cpu.cfs_period_us
cpu分配的周期(微秒所以文件名中用 us 表示默认为100000。 1设置单个容器进程能够使用的CPU使用率上限
进行CPU压力测试
docker run -itd --name test5 centos:7 /bin/bash
docker ps -a #查看对应的容器id
docker exec -it 容器id /bin/bash
vi /cpu.sh
#!/bin/bash
i0
while true
do
let i
done
chmod x /cpu.sh
./cpu.sh
top #可以看到这个脚本占了很多的cpu资源 cd /sys/fs/cgroup/cpu/docker/容器id
echo 50000 cpu.cfs_quota_us
docker exec -it 容器id /bin/bash
./cpu.sh
top #可以看到cpu占用率接近50%cgroups对cpu的控制起了效果 针对新建的容器
docker run --cpu-period 单个CPU调度周期时间1000~1000000 --cpu--quota 容器进程能够使用的最大CPU时间1000
针对已存在的容器
修改/sys/fs/cgroup/cpu/docker/容器id/目录下的cat cpu.cfs_quota_uscat cpu.cfs_period_us文件的值docker run -itd --name test5 centos:7 /bin/bash
docker ps -a
cd/sys/fs/cgroup/cpu/docker/容器id
cpu.cfs_quota_us
cpu.cfs_period_us
2设置多个容器的CPU占用份额
只能在多个容器同时运行且CPU资源紧张时生效
docker run --cpu-shares 容器进程最大占用CPU的份额值为1024的倍数
#创建两个容器为 c1 和 c2若只有这两个容器设置容器的权重使得c1和c2的CPU资源占比为1/3和2/3。
docker run -itd --name c1 --cpu-shares 1024 centos:7 /bin/bash
docker run -itd --name c2 --cpu-shares 2048 centos:7 /bin/bash
#分别进入容器进行压力测试
docker exec -it c1 bash
docker exec -it c2 bash
yum install -y epel-release
yum install -y stress
stress -c 4 #产生四个进程每个进程都反复不停的计算随机数的平方根
#查看容器运行状态动态更新
docker stats
可以看到在 CPU 进行时间片分配的时候容器 c2 比容器 c1 多一倍的机会获得 CPU 的时间片。 但分配的结果取决于当时主机和其他容器的运行状态 实际上也无法保证容器 c1 一定能获得 CPU 时间片。比如容器 c1 的进程一直是空闲的那么容器 c2 是可以获取比容器 c1 更多的 CPU 时间片的。极端情况下例如主机上只运行了一个容器即使它的 CPU 份额只有 50它也可以独占整个主机的 CPU 资源。
Cgroups 只在容器分配的资源紧缺时即在需要对容器使用的资源进行限制时才会生效。因此无法单纯根据某个容器的 CPU 份额来确定有多少 CPU 资源分配给它资源分配结果取决于同时运行的其他容器的 CPU 分配和容器中进程运行情况。 3设置容器绑定指定的CPU
docker run --cpuset-cpus CPUID1[,CPUID2,....]
#先分配虚拟机4个CPU核数
docker run -itd --name test7 --cpuset-cpus 1,3 centos:7 /bin/bash绑定cpu1和3
#进入容器进行压力测试
yum install -y epel-release
yum install stress -y
stress -c 4
#退出容器执行 top 命令再按 1 查看CPU使用情况。 2、内存限制
设置容器能够使用的内存和swap的值
-m(--memory) 选项用于限制容器可以使用的最大内存docker run -itd --name wx -m 512m centos:7 bash docker run -m 内存大小 --memory-swap 内存和swap的总值
限制可用的 swap 大小 --memory-swap
强调一下--memory-swap 是必须要与 --memory 一起使用的。内存设置0或者不设置表示swap为内存的两倍内存设置-1表示不限制swap的值宿主机有多少容器就可使用多少内存设置与-m一样的值表示不适用swap 3、磁盘IO限制
docker run --device-read-bps 磁盘设备文件路径:速率 #限制容器在某个磁盘上读的速度--device-write-bps 磁盘设备文件路径:速率 #限制容器在某个磁盘上写的速度--device-read-iops 磁盘设备文件路径:次数 #限制容器在某个磁盘上读的次数--device-write-iops 磁盘设备文件路径:次数 #限制容器在某个磁盘上写的速度 清除已停止的容器、没用到的镜像和网络、缓存
docker清空docker system prune -a先查看目前所有的镜像和容器docker ps -a docker images