覆盖码头网络中的--link和--alias之间的区别?

时间:2016-03-16 23:26:07

标签: networking docker dns

我正在阅读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。

来自一个容器的网络别名实际上是来自同一网络中第二个容器的链接吗?

1 个答案:

答案 0 :(得分:12)

--net-alias--link之间存在两个差异:

  1. 使用--net-alias,只有当一个容器位于同一网络上时,才能访问另一个容器。换句话说,除了--net-alias foo--net-alias bar之外,您需要在使用--net foobar_net创建网络后使用docker network create foobar_net启动这两个容器。
  2. 使用--net-alias foo,同一网络中的所有容器可以使用别名foo到达容器。使用--link只有关联的容器才能使用名称foo到达容器。
  3. 从历史上看,--link是在libnetwork和所有与网络相关的功能之前创建的。在libnetwork之前,所有容器都在同一网络bridge中运行,而--link仅向/etc/hosts添加了名称。然后,添加了自定义网络http://goo.gl/mwXfRl

    有关--link

    的更多信息,另请参阅the behavior of --link in user-defined networks was changed
相关问题