docker容器跨宿主机通信
openvswitch安装
安装依赖
yum -y install make gcc openssl-devel autoconf automake rpm-build redhat-rpm-config python-devel openssl-devel kernel-devel kernel-debug-devel libtool wget
yum install -y python-six selinux-policy-devel
预处理
配置步骤
先分配好docker的ip规划
环境
server1 192.168.32.232 centos7
server2 192.168.32.245 centos7
本次例子 server1 docker 172.17.1.0/24 255.255.255.0
server2 docker 172.17.2.0/24 255.255.255.0
创建网桥kbr0,删除docker0
vim /etc/sysconfig/network-scripts/ifcfg-kbr0DEVICE=kbr0ONBOOT=yesBOOTPROTO=staticIPADDR=172.17.1.1NETMASK=255.255.255.0GATEWAY=172.17.1.0USERCTL=noTYPE=BridgeIPV6INIT=no
配置路由信息,用于转发到其他的宿主机上docker容器。
vim /etc/sysconfig/network-scripts/route-ens192
172.17.2.0/24 via 192.168.32.245 dev ens192
- 表示在192.168.32.245上面的docker网段是172.17.2.0/24
重启网卡配置 systemctl restart network
server2的配置大致一样,只需更改一些本地ip即可
设置docker容器网桥
echo 'DOCKER_OPTS="-b=kbr0"' >> /etc/sysconfig/docker
vim /usr/lib/systemd/system/docker.service [Unit]Description=Docker Application Container EngineDocumentation=https://docs.docker.comAfter=network-online.target firewalld.serviceWants=network-online.target[Service]Type=notifyEnvironmentFile=-/etc/sysconfig/dockerExecStart=/usr/bin/dockerd $DOCKER_OPTSExecReload=/bin/kill -s HUP $MAINPIDLimitNOFILE=infinityLimitNPROC=infinityLimitCORE=infinityTimeoutStartSec=0Delegate=yesKillMode=processRestart=on-failureStartLimitBurst=3StartLimitInterval=60s[Install]WantedBy=multi-user.target
重启docker
systemctl daemon-reload
systemctl restart docker
测试网络
在两台主机上分别启动容器
docker run -d --name=gggg centos /bin/bash
可以看到当前网卡信息为172.17.1.2
ping宿主机
ping server2的容器
ping 外网
以上实验完成。