docker网络及资源分配

网络详解

安装docker时,他会自动创建三个网络,bridge(创建容器默认连接到此网络)、none、host

  • host:容器将不会虚拟出自己的网卡,配置自己的IP等。而是使用宿主机的IP和端口
  • container:创建的容器不会创建自己的网卡、配置自己的IP,而是和一个指定的容器共享IP、端口范围
  • none:该模式关闭了容器的网络功能
  • bridge:此模式会为每一个容器分配、设置ip等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及IP tables

网络

docker network ls   ///查看docker容器中的网卡
///桥接模式
docker run -itd --name test1 --network bridge centos:7 /bin/bash   //创建容器后面不能接--IP地址

docker ps -a     ///查看容器
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
2ad1dcabe60c        centos:7            "/bin/bash"         About a minute ago   Up About a minute                       test1
docker exec -it 2ad1dcabe60c /bin/bash    进入容器
[root@2ad1dcabe60c /]# yum install -y net-tools    ///在容器中优化环境
[root@2ad1dcabe60c /]# ifconfig      ///在容器中查看网卡
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)
        RX packets 10812  bytes 16007415 (15.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 5913  bytes 323629 (316.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
///自定义网络固定ip
[root@promote ~]# docker network create --subnet=172.18.0.0/16 mysnetwork    ///创建一个网络容器
48ddf0333e3a49af4c61976e0c54e36ca00fdb6d9062c0ca7a7ec1a96e6ecee7
[root@promote ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
43c41951a769        bridge              bridge              local
7bacc53df75e        host                host                local
48ddf0333e3a        mysnetwork          bridge              local
23f2665b3a0b        none                null                local
[root@promote ~]# ifconfig
///新增一个网卡
br-48ddf0333e3a: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.18.0.1  netmask 255.255.0.0  broadcast 172.18.255.255
        ether 02:42:9e:1e:89:ad  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@promote ~]# docker run -itd --name test2 --network mysnetwork --ip 172.18.0.10 centos:7 /bin/bash   //创建网卡
f7b597f21be710ab6c9723943c2b28f4446769e3b39bf8b5074d162b57b4a628
[root@promote ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
f7b597f21be7        centos:7            "/bin/bash"         About a minute ago   Up 57 seconds                           test2
2ad1dcabe60c        centos:7            "/bin/bash"         37 minutes ago       Up 37 minutes                           test1
[root@f7b597f21be7 /]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.18.0.10  netmask 255.255.0.0  broadcast 172.18.255.255
        ether 02:42:ac:12:00:0a  txqueuelen 0  (Ethernet)
        RX packets 10506  bytes 15489652 (14.7 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 5621  bytes 307386 (300.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
///网卡可以指定IP地址

资源控制
一、cup
cpu使用率

///进入容器文件中-1表示容器可以任意使用资源 (注意docker目录只有在容器开启时才会产生)可以直接更改参数
cat /sys/fs/cgroup/cpu/docker/2ad1dcabe60cb0d0973da54e57914a9abac372c5e57034335c94a40c17abb5e7/cpu.cfs_quota
-1
docker run -itd --name test3 --cpu-quota 20000 centos:7 /bin/bash   //设置cpu使用率  20000是以时间秒(s)为单位应为cpu生命周期是以时间为周期的
6a7d0c782f9356bb361e57344d5832517edd82f5fea8340393bde1ae9d97816c

//cpu压测测试
 docker exec -it 6a7d0c782f93 /bin/bash    ///进入容器
 yum install -y bc         ///下载压测所需工具
echo "scale=5000; 4*a(1)" | bc -l -q
利用top查看cpu使用上线在20%作用

按比例分配
创建两个容器为c1和c2 容只有这两个容器,设置容器的权重(占用资源比例),使得c1 和 c2 cpu资源占比为33.3%和66.7%

//创建两个容器
docker run -itd --name c1 --cpu-shares 512 centos:7 /bin/bash   ///占cpu比例3/1
docker run -itd --name c2 --cpu-shares 1024 centos:7 /bin/bash  站cpu比例3/2
验证结果
//分别进入容器
docker exec -it 5b0695b757c3 /bin/bash   ///进入c1
yum install -y epel-release     ///装源
 yum install stress -y         ///压测工具
  stress -c 4     ///进行压测

限制容器使用指定的cpu
利用top在按1查看cpu的使用

docker run -itd --name c1 --cpuset-cpus 1,3 centos:7 /bin/bash  //设置一、三线程为容器服务
docker exec -it a09943990395  /bin/bash       进入容器
开始压测
yum install -y epel-release
yum install stress -y  
 stress -c 4 

内存使用限制

docker run -itd --name c2 -m 512m centos:7 /bin/bash    //创建一个内存为512m的容器
docker stats      ///查看容器使用

//对io的限制
–device-read-bps:限制读取某个设备的bps(数据量)例如 docker run -d --name c1 --device-read-bps centos:7 /bin/bash
–device-write-bps:限制写入某个设配的bps 例如:docker tun -d --name c2 --device-write-bps centos:7 /bin/bash

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值