docker_practice/network/linking.md

68 lines
2.1 KiB
Go
Raw Normal View History

## 容器互联
2017-11-23 02:42:43 +00:00
如果你之前有 `Docker` 使用经验你可能已经习惯了使用 `--link` 参数来使容器互联
2017-11-30 10:22:16 +00:00
随着 Docker 网络的完善强烈建议大家将容器加入自定义的 Docker 网络来连接多个容器而不是使用 `--link` 参数
2017-11-23 02:42:43 +00:00
### 新建网络
2017-11-23 02:42:43 +00:00
下面先创建一个新的 Docker 网络
2017-11-13 10:54:38 +00:00
```bash
2017-11-23 02:42:43 +00:00
$ docker network create -d bridge my-net
2014-09-05 07:50:42 +00:00
```
2017-11-30 10:22:16 +00:00
`-d` 参数指定 Docker 网络类型 `bridge` `overlay`其中 `overlay` 网络类型用于 [Swarm mode](../swarm_mode/)在本小节中你可以忽略它
2017-11-23 02:42:43 +00:00
### 连接容器
2014-09-05 07:50:42 +00:00
2017-11-30 10:22:16 +00:00
运行一个容器并连接到新建的 `my-net` 网络
2014-09-18 07:55:24 +00:00
2017-11-13 10:54:38 +00:00
```bash
$ docker run -it --rm --name busybox1 --network my-net busybox sh
2014-09-05 07:50:42 +00:00
```
2017-11-23 02:42:43 +00:00
2017-11-30 10:22:16 +00:00
打开新的终端再运行一个容器并加入到 `my-net` 网络
2017-11-23 02:42:43 +00:00
2017-11-13 10:54:38 +00:00
```bash
$ docker run -it --rm --name busybox2 --network my-net busybox sh
2014-09-05 07:50:42 +00:00
```
2017-11-23 02:42:43 +00:00
再打开一个新的终端查看容器信息
2017-11-13 10:54:38 +00:00
```bash
$ docker container ls
2017-11-23 02:42:43 +00:00
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b47060aca56b busybox "sh" 11 minutes ago Up 11 minutes busybox2
8720575823ec busybox "sh" 16 minutes ago Up 16 minutes busybox1
```
2017-11-23 02:42:43 +00:00
下面通过 `ping` 来证明 `busybox1` 容器和 `busybox2` 容器建立了互联关系
2017-11-23 02:42:43 +00:00
`busybox1` 容器输入以下命令
2014-09-05 07:50:42 +00:00
2017-11-13 10:54:38 +00:00
```bash
2017-11-23 02:42:43 +00:00
/ # ping busybox2
PING busybox2 (172.19.0.3): 56 data bytes
64 bytes from 172.19.0.3: seq=0 ttl=64 time=0.072 ms
64 bytes from 172.19.0.3: seq=1 ttl=64 time=0.118 ms
```
2017-11-30 10:22:16 +00:00
ping 来测试连接 `busybox2` 容器它会解析成 `172.19.0.3`
2017-11-23 02:42:43 +00:00
同理在 `busybox2` 容器执行 `ping busybox1`也会成功连接到
2017-11-13 10:54:38 +00:00
```bash
2017-11-23 02:42:43 +00:00
/ # ping busybox1
PING busybox1 (172.19.0.2): 56 data bytes
64 bytes from 172.19.0.2: seq=0 ttl=64 time=0.064 ms
64 bytes from 172.19.0.2: seq=1 ttl=64 time=0.143 ms
2014-09-05 07:50:42 +00:00
```
2017-11-23 02:42:43 +00:00
这样`busybox1` 容器和 `busybox2` 容器建立了互联关系
2017-11-23 04:59:13 +00:00
### Docker Compose
如果你有多个容器之间需要互相连接推荐使用 [Docker Compose](../compose)