docker 网络

本节探讨一下docker 的多个容器是怎么通信的
首先准备环境

1
2
$ docker pull busybox
$ sudo yum install -y bridge-utils

启动一个容器

1
$ docker run -itd --name test1 busybox


再启动一个容器添加一个link

1
$ 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种

  1. 启动的时候用–link 指定 container。
  2. 新建一个网桥,把所有的容器连接在新建的网桥上。