我正在阅读this官方Docker 0.10.3文档(此时,它仍在分支中)并且它说:
--link=CONTAINER_NAME:ALIAS
除了如上所述的--name之外,容器还是由用户定义的网络中的一个或多个已配置的--net-alias(或docker network connect命令中的--alias)发现的。嵌入式DNS服务器维护所有容器别名与其在特定用户定义网络上的IP地址之间的映射。通过在docker network connect命令中使用--alias选项,容器可以在不同的网络中具有不同的别名。
{{1}}
在运行容器时使用此选项会为嵌入式DNS提供一个名为ALIAS的额外条目,该条目指向CONTAINER_NAME标识的容器的IP地址。使用--link时,嵌入式DNS将保证仅在使用--link的容器上进行本地化查找。这使得新容器内的进程可以连接到容器,而无需知道其名称或IP。
来自一个容器的网络别名实际上是来自同一网络中第二个容器的链接吗?
答案 0 :(得分:12)
--net-alias
和--link
之间存在两个差异:
--net-alias
,只有当一个容器位于同一网络上时,才能访问另一个容器。换句话说,除了--net-alias foo
和--net-alias bar
之外,您需要在使用--net foobar_net
创建网络后使用docker network create foobar_net
启动这两个容器。--net-alias foo
,同一网络中的所有容器可以使用别名foo
到达容器。使用--link
,只有关联的容器才能使用名称foo
到达容器。从历史上看,--link
是在libnetwork
和所有与网络相关的功能之前创建的。在libnetwork
之前,所有容器都在同一网络bridge
中运行,而--link
仅向/etc/hosts
添加了名称。然后,添加了自定义网络http://goo.gl/mwXfRl。
有关--link
。
--link
in user-defined networks was changed