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
預處理
setenforce 0
配置步驟
先分配好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-kbr0
DEVICE=kbr0
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.17.1.1
NETMASK=255.255.255.0
GATEWAY=172.17.1.0
USERCTL=no
TYPE=Bridge
IPV6INIT=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 Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
EnvironmentFile=-/etc/sysconfig/docker
ExecStart=/usr/bin/dockerd $DOCKER_OPTS
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=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 外網

以上實驗完成。
