项目部署使用Docker时,必然涉及docker容器互连的问题。之前的docker使用者,可能都习惯使用—linke参数来使容器互联。
随着 Docker 网络的完善,强烈建议大家将容器加入自定义的 Docker 网络来连接 多个容器,而不是使用 —link 参数。

1. 新建网络

下面先创建一个新的 Docker 网络。

  1. $ docker network create -d bridge my-net

-d 参数指定 Docker 网络类型,有 bridge和overlay 。其中 overlay 网络类型用于 Swarm mode。

2. 连接容器

运行一个容器并连接到新建的 my-net 网络

  1. $ docker run -it --rm --name busybox1 --network my-net busybox sh

打开新的终端,再运行一个容器并加入到 my-net 网络

  1. $ docker run -it --rm --name busybox2 --network my-net busybox sh

再打开一个新的终端查看容器信息

  1. $ docker container ls
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. b47060aca56b busybox "sh" 11 m inutes ago Up 11 minutes busybox2
  4. 8720575823ec busybox "sh" 16 m inutes ago Up 16 minutes busybox1

下面通过 ping 来证明 busybox1 容器和 busybox2 容器建立了互联关系。
在 busybox1 容器输入以下命令:

  1. / ping busybox2
  2. PING busybox2 (172.19.0.3): 56 data bytes
  3. 64 bytes from 172.19.0.3: seq=0 ttl=64 time=0.072 ms
  4. 64 bytes from 172.19.0.3: seq=1 ttl=64 time=0.118 ms

用 ping 来测试连接 busybox2 容器,它会解析成 172.19.0.3 。
同理在 busybox2 容器执行 ping busybox1 ,也会成功连接到。

  1. / ping busybox1
  2. PING busybox1 (172.19.0.2): 56 data bytes
  3. 64 bytes from 172.19.0.2: seq=0 ttl=64 time=0.072 ms
  4. 64 bytes from 172.19.0.2: seq=1 ttl=64 time=0.118 ms

这样, busybox1容器和busybox2容器建立了互联关系。