不同容器之间的通信可以借助于 pipework 这个工具
pipework是由Docker的工程师Jérme Petazzoni开发的一个Docker网络配置工具,由200多行shell实现,方便易用。
下载地址:wgethttps://github.com/jpetazzo/pipework.git
|
1
2
|
[root@localhost src]
[root@localhost src]
|
安装相应依赖软件
|
1
2
3
|
yum
install
bridge-utils -y
[root@localhost src]
[root@localhost src]
|
配置桥接网络
![图片1.png wKioL1mgNe-ycPdgAAAjwJeZ-ME166.png-wh_50]()
![图片2.png wKioL1mgNfCywf5HAAAKdo7uCag583.png-wh_50]()
![图片3.png wKiom1mgNhKScuBTAABAOkJBNAo213.png-wh_50]()
把 docker 的桥接指定为 br0,这样跨主机不同容器之间通过 pipework 新建 docker 容器的网卡桥接到 br0,这样跨主机容器之间就可以通信了。
|
1
2
3
|
[root@localhost src]
OPTIONS=
'--selinux-enabled --log-driver=journald --signature-verification=false -b=br0'
添加
[root@localhost src]
|
pipework
把 docker 默认桥接指定到了 br0,则最好在创建容器的时候加上--net=none,防止自动分配的 IP 在局域网中有冲突。
使用镜像运行一个容器
|
1
2
|
[root@localhost src]
230f28d287a9013b7b660e1b57831c65b82c5338dfafdc16871fe6e0ccc7e150
|
注:默认不指定网卡设备名,则默认添加为 eth1
注:另外 pipework 不能添加静态路由,如果有需求则可以在 run 的时候加上 --privileged=true 权限在容器中手动添加,但这种安全性有缺陷,可以通过 ip netns 操作 密码默认是 admin
![图片4.png wKiom1mgNsXBx6BgAABDbhOuDSg035.png-wh_50]()
访问容器提供的web服务:
![图片5.png wKioL1mgNsbwTKGbAABI-nw2pp0109.png-wh_50]()
使用ip netns添加静态路由,避免创建容器使用--privileged=true选项造成一些不必要的安全问题:
|
1
2
3
4
|
[root@localhost ~]
19440
[root@localhost ~]
[root@localhost ~]
|
本文转自柴鑫旺 51CTO博客,原文链接:http://blog.51cto.com/chaixinwang/1959621
,如需转载请自行联系原作者