目录
一、docker网络模式
host:
container:
none:
bridge:
二、网络空间(固定容器地址)
查看网络模式
创建新的网络
部署实例
三、内存使用限制
1、内存使用带下限制
四、限制磁盘读写
1、限制数据量
一、docker网络模式
docker网络有四种模式:host、container、none、bridge模式。
host:
容器将不会虚拟出自己的网卡docker 0,配置自己的IP等,而是使用宿主机ens33的IP和端口。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。
host最大的优势就是网络性能比较好,但是网络的隔离性不好
什么意思了? 就是说如果docker使用host网络模式时不会创建自己的虚拟网卡和ip地址而是使用宿主机的ip加端口访问
container:
新创建的容器和已经存在的一个容器共享一个 Network Namespace(网络空间),创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围
大概的意思就是:假设我现在要启动一个nginx实例 这个实例不会创建自己的ip 和端口 而是用第一个启动的容器ip+端口地址访问
none:
none模式没有网络,封闭的网络性能很好的保证容器的安全性。可以在容器创建时通过–network=none来指定。
可以理解为:该模式关闭了容器的网络功能
bridge:
Docker进程启动时,在主机上创建一个名为docker0的虚拟网桥,从docker0子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关。
可以理解为:在启动一个新的容器时,只要使用了bridge网络模式 都会创建一个docker0的虚拟网桥,在从docker0中分配一个ip地址给启动的容器实例
docker 网络模式默认为bridge
二、网络空间(固定容器地址)
查看网络模式
docker network ls
[root@control ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
09727bad7e47 bridge bridge local
99f64ce0f908 cig_default bridge local
9829c3adb482 host host local
233efab29cf8 none null local
[root@control ~]#
创建新的网络
docker network create --subnet=网段/24 名字
docker network create --subnet=10.18.1.0/24 newnetwork
[root@control ~]# docker network create --subnet=10.18.1.0/24 newnetwork #创建新的网段
02f91f4c69b993c26ef4edc47aa7bbdd22cee83816c6ee007ffbe5e29470076a
[root@control ~]# docker network ls #查看网络列表
NETWORK ID NAME DRIVER SCOPE
09727bad7e47 bridge bridge local
99f64ce0f908 cig_default bridge local
9829c3adb482 host host local
02f91f4c69b9 newnetwork bridge local
233efab29cf8 none null local
[root@control ~]#
部署实例
如果自己的主机上没有nginx镜像的先用docker pull nginx 拉取一个镜像
docker run -p 80:80 --name nginx2 --network newnetwork --ip 10.18.1.100 -d nginx
docker run -itd --name centos7 --network newnetwork --ip 10.18.1.101 -d centos:7 /bin/bash
docker ps #正在运行的进程
[root@control data]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
adf4d15bf3c6 centos:7 "/bin/bash" 27 minutes ago Up 27 minutes centos7
73f20217fe01 nginx "/docker-entrypoint.…" 35 minutes ago Up 35 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp nginx2
进入容器查看ip
[root@control data]# docker exec -it adf4d15bf3c6 /bin/bash
[root@adf4d15bf3c6 /]#
[root@adf4d15bf3c6 /]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.18.1.101 netmask 255.255.255.0 broadcast 10.18.1.255
ether 02:42:0a:12:01:65 txqueuelen 0 (Ethernet)
RX packets 28645 bytes 53081680 (50.6 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 14952 bytes 820941 (801.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 164 bytes 18003 (17.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 164 bytes 18003 (17.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0[root@adf4d15bf3c6 /]#
发现centos7的ip和自己指定的ip一样
三、内存使用限制
1、内存使用带下限制
限制内存最大只能使用512m
[root@control docker]# docker run -itd --name test3 -m 512m centos:7 /bin/bash
9d48f31c4e30cb1ff6c1d6daed8c11453486cc30a1bd7510ab8af1f7af03dc1a
[root@control docker]#docker stats #查看监控
四、限制磁盘读写
1、限制数据量
--device-read-bps:限制读某个设备的bps(数据量)
格式:docker run -itd --name 名字 --device-read-bps 设备名:读取额度 centos:7
例:docker run -d --name test4 --device-read-bps /dev/sdb:100M centos:7
--device-write-bps:限制写入某个设备的bps(数据量)
格式:docker run -itd --name 名字 --device-read-bps 设备名:写入额度 centos:7
例: docker run -d --device-write-bps /dev/sdb:50M centos:7