不同容器之间的通信可以借助于 pipework 这个工具

pipework是由Docker的工程师Jérme Petazzoni开发的一个Docker网络配置工具,由200多行shell实现,方便易用。

下载地址:wgethttps://github.com/jpetazzo/pipework.git

[root@localhost src]# unzip pipework-master.zip
[root@localhost src]# cp -p pipework-master/pipework /usr/local/bin/

安装相应依赖软件

yum install bridge-utils -y    
[root@localhost src]# docker load < centos7http.tar
[root@localhost src]# yum -y install docker

配置桥接网络 

不同容器之间的通信可以借助于 pipework_第1张图片

不同容器之间的通信可以借助于 pipework_第2张图片

[root@localhost src]# systemctl restart network

不同容器之间的通信可以借助于 pipework_第3张图片

docker 的桥接指定为 br0,这样跨主机不同容器之间通过 pipework 新建 docker 容器的网卡桥接到 br0,这样跨主机容器之间就可以通信了。

[root@localhost src]# systemctl  stop docker
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false -b=br0'  添加
[root@localhost src]# systemctl start docker

pipework

docker 默认桥接指定到了 br0,则最好在创建容器的时候加上--net=none,防止自动分配的 IP 在局域网中有冲突。

[root@localhost src]# pipework

使用镜像运行一个容器

[root@localhost src]# docker run -dit --net=none centos7:http
230f28d287a9013b7b660e1b57831c65b82c5338dfafdc16871fe6e0ccc7e150

注:默认不指定网卡设备名,则默认添加为 eth1

[root@localhost ~]# pipework  br0 -i eth0 230f28d287a 192.168.100.50/[email protected]

注:另外 pipework 不能添加静态路由,如果有需求则可以在 run 的时候加上 --privileged=true 权限在容器中手动添加,但这种安全性有缺陷,可以通过 ip netns 操作 密码默认是 admin

[root@localhost ~]# ssh [email protected]

不同容器之间的通信可以借助于 pipework_第4张图片

访问容器提供的web服务:

不同容器之间的通信可以借助于 pipework_第5张图片

使用ip netns添加静态路由,避免创建容器使用--privileged=true选项造成一些不必要的安全问题:

[root@localhost ~]# docker inspect  --format="``.`State`.`Pid`" 230f28d287a9
19440
[root@localhost ~]# ln -s /proc/19440/ns/net /var/run/netns/19440
[root@localhost ~]#