docker容器跨宿主机通信
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 外网
以上实验完成。