不同容器之间的通信可以借助于 pipework 这个工具
pipework是由Docker的工程师Jérme Petazzoni开发的一个Docker网络配置工具,由200多行shell实现,方便易用。
下载地址:wgethttps://github.com/jpetazzo/pipework.git
1
2
|
[root@localhost src]
# unzip pipework-master.zip
[root@localhost src]
# cp -p pipework-master/pipework /usr/local/bin/
|
安装相应依赖软件
1
2
3
|
yum
install
bridge-utils -y
[root@localhost src]
# docker load < centos7http.tar
[root@localhost src]
# yum -y install docker
|
配置桥接网络
1
|
[root@localhost src]
# systemctl restart network
|
把 docker 的桥接指定为 br0,这样跨主机不同容器之间通过 pipework 新建 docker 容器的网卡桥接到 br0,这样跨主机容器之间就可以通信了。
1
2
3
|
[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 在局域网中有冲突。
1
|
[root@localhost src]
# pipework
|
使用镜像运行一个容器
1
2
|
[root@localhost src]
# docker run -dit --net=none centos7:http
230f28d287a9013b7b660e1b57831c65b82c5338dfafdc16871fe6e0ccc7e150
|
注:默认不指定网卡设备名,则默认添加为 eth1
1
|
[root@localhost ~]
# pipework br0 -i eth0 230f28d287a 192.168.100.50/24@192.168.100.1
|
注:另外 pipework 不能添加静态路由,如果有需求则可以在 run 的时候加上 --privileged=true 权限在容器中手动添加,但这种安全性有缺陷,可以通过 ip netns 操作 密码默认是 admin
1
|
[root@localhost ~]
# ssh admin@192.168.100.50
|
访问容器提供的web服务:
使用ip netns添加静态路由,避免创建容器使用--privileged=true选项造成一些不必要的安全问题:
1
2
3
4
|
[root@localhost ~]
# docker inspect --format="``.`State`.`Pid`" 230f28d287a9
19440
[root@localhost ~]
# ln -s /proc/19440/ns/net /var/run/netns/19440
[root@localhost ~]
#
|
本文转自柴鑫旺 51CTO博客,原文链接:http://blog.51cto.com/chaixinwang/1959621
,如需转载请自行联系原作者