本节探讨一下docker 的多个容器是怎么通信的
首先准备环境1
2$ docker pull busybox
$ sudo yum install -y bridge-utils
启动一个容器1
$ docker run -itd --name test1 busybox
再启动一个容器添加一个link1
$ docker run -itd --name test2 --link=test1 busybox
test2可以和test1进行通信说明是可达的
反之看一下test1 能否和test2通信
经过测试test1和test2是不可达的
再看一下test1和test2连接的网桥
继续往下找
test1的ip:
test2的ip:
可以进入test1和test2的容器内部查看ip和这里的一样,可以证明容器自动连接在docker0这个网卡上,默认是无法彼此间通信,需要用–link去指定
如果容器启动的很多,–link的方法很不方便,下面换一种方法,创建一个网桥,所有的容器连接在新建的网桥上
先把容器全部删掉
1 | $ docker rm -f test1 test2 |
先看一下docker network 有哪些命令
下面先创建一个bridge
再启动2个容器并连接到新建的bridge上
再来看一下bridge 和new-bridge
1 | $ docker network inspect bridge |
没有任何一个容器连接在bridge上
1 | $ docker network inspect new-bridge |
可以看到test1和test2确实连接在新建的 new-bridge上
再一次进入test1 和test2容器内去ping 对方
可以看到没有任何的容器连接在docker0上
总结: 容器内之间进行通信的方式有2种
- 启动的时候用–link 指定 container。
- 新建一个网桥,把所有的容器连接在新建的网桥上。