Docker网络管理
1、介绍
网络管理是docker中重要的部分,由于需要构建集群,容器之间需要进行通信,尤其是跨主机之间的容器间进行通信。
2、网络管理
docker有三种网络类型,bridge、host和none。
查看docker的网络帮助
# 查看network命令帮助 $>docker network --help
运行结果如下:
Usage: docker network COMMAND Manage networks Commands: connect Connect a container to a network create Create a network disconnect Disconnect a container from a network inspect Display detailed information on one or more networks ls List networks prune Remove all unused networks rm Remove one or more networks
查看网络列表
列表中DRIVER是三种类型之一,name可以任意取。
$>docker network list
创建自己的网络,指定子网
$>docker network create --subnet 172.18.0.0/16 mynetwork
查看创建的网络
$>docker network list
结果如下:
检查指定网络
$>docker network inspect mynetwork
网关和网段
每个容器的ip地址配置
3、使用macvlan配置跨网访问
3.1 环境说明
本案例使用两台虚拟机,s101和s102,具体配置见表格。
主机名称 | ip地址 | 网关 |
---|---|---|
s101 | 192.168.231.101 | 192.168.231.2 |
s102 | 192.168.231.102 | 192.168.231.2 |
3.2 目标
本案例要是实现两台虚拟机内的四个docker容器之间的网络访问,具体网络拓扑如下:
主机 | docker容器1 | docker容器2 |
---|---|---|
s101(192.168.231.101) | 192.168.231.10 | 192.168.231.11 |
s102(192.168.231.102) | 192.168.231.20 | 192.168.231.21 |
3.3 操作
对两台虚拟机的以太网卡均开启为混杂模式
如果不开启混杂模式,会导致macvlan无法访问外网。使用命令如下:
# 设置以太网卡开启混杂模式 $>ip link set eth16777736 promisc on
查看网卡状态
$>ifconfig
在每台虚拟机上执行如下命令,添加虚拟网卡
# s101执行 ,需要位于同一网段 $>docker network create -d macvlan --subnet=192.168.231.10/24 --gateway=192.168.231.2 -o parent=eno16777736 -o macvlan_mode=bridge eth0_1 # s102执行 $>docker network create -d macvlan --subnet=192.168.231.20/24 --gateway=192.168.231.2 -o parent=eno16777736 -o macvlan_mode=bridge eth0_1
分别在两台虚拟机上创建docker容器
s101
# 容器:test10 $>docker run -ti --net=eth0_1 --ip=192.168.231.10 --name test10 f3b18d5d93e7 /bin/bash # 容器:test11 $>docker run -ti --net=eth0_1 --ip=192.168.231.11 --name test11 f3b18d5d93e7 /bin/bash
s102
# 容器:test20 $>docker run -ti --net=eth0_1 --ip=192.168.231.20 --name test20 f3b18d5d93e7 /bin/bash # 容器:test21 $>docker run -ti --net=eth0_1 --ip=192.168.231.21 --name test21 f3b18d5d93e7 /bin/bash
测试容器之间是否能够ping通
$>ping 192.168.231.11 # 10 ping 11 $>ping 192.168.231.20 # 10 ping 20