使用 link 命令,可以使多个容器互联,在容器之间创建联系,接收容器可以通过容器名访问源容器,而不必使用 IP 地址。
启动 s1 容器
docker run -it --name s1 centos
我们使用以上命令,启动一个 centos 容器,命名为 s1。
使用 docker inspect s1 命令,查看容器的 IP。
启动 s2 容器
docker run -it --name s2 --link s1:s1 centos
我们使用以上命令,启动一个 centos 容器,命名为 s2。其中--link 参数中,第一个 s1 是要连接的容器的名称,也就是 s1 容器的名称;第二个 s1 是别名。
使用 docker inspect s2 命令,查看容器的 IP。
通信测试
我们在 s2 容器内,使用 ping 命令,分别使用 s1 容器的 IP 和容器名,去测试连接容器 s1。实验证明,使用 IP 和容器名都可以通信。
查看 s2 容器内的/etc/hosts 文件内容,我们可以看到,在 hosts 中有 s1 容器的 IP 配置。
但是在 s1 容器内,使用 ping 命令,分别使用 s2 容器的 IP 和容器名,去测试连接容器 s2。实验证明,使用 IP 可以通信,使用容器名无法通信。
查看 s1 容器内的/etc/hosts 文件内容,我们可以看到,在 hosts 中没有 s2 容器的 IP 配置。
启动 a1 和 a2 两个 centos 容器,两容器之间不使用 link 命令连接。而后,我们在 a1 中使用 ping 命令,测试连接 a2 容器的 IP,在 a2 中使用 ping 命令,测试链接 a1 容器的 IP,实验证明,通过 IP,两容器能够彼此通信。最后,我们使用 ping 命令,分别以容器名称去测试两容器的通信,实验证明,通过容器名,两容器无法通信。
docker run -it --name a1 centos
docker run -it --name a2 centos