覆盖dockernetworking中的–link和–alias之间的区别?

我正在阅读这个官方的Docker 0.10.3文档(目前它仍然在一个分支),它说:

--net-alias=ALIAS 

除了上面描述的名称以外,容器还会在用户定义的networking中被一个或多个configuration的–net-alias(或docker network connect命令中的–alias)发现。 embedded式DNS服务器维护所有容器别名与其在特定用户定义networking上的IP地址之间的映射。 通过在docker network connect命令中使用–alias选项,容器可以在不同的networking中具有不同的别名。

 --link=CONTAINER_NAME:ALIAS 

在运行容器时使用此选项可为embedded式DNS添加一个名为ALIAS的额外条目,该条目指向由CONTAINER_NAME标识的容器的IP地址。 当使用 – 链接的embedded式DNS将保证本地化的查找结果只在使用 – 链接的容器。 这使新容器内的进程连接到容器,而不必知道其名称或IP。

从一个容器的networking别名实际上是从同一networking中的第二个容器的链接?

--net-alias--link有两个区别:

  1. 使用--net-alias ,一个容器只有在同一个networking上才能访问另一个容器。 换句话说,除了--net-alias foo--net-alias bar ,在使用--net foobar_net创build--net foobar_net创buildnetworking之后,您需要使用--net foobar_net启动这两个容器。
  2. 使用--net-alias foo ,同一networking中的所有容器都可以使用别名foo访问容器。 使用--link只有链接的容器可以通过名称foo到达容器。

历史上, --link是在libnetwork和所有与networking相关的function之前创build的。 在libnetwork之前,所有的容器都运行在同一个bridge ,并且--link只添加名称到/etc/hosts 。 然后,添加了自定义networking,并--link了用户定义networking中的--link行为 。

有关--link更多信息,另请参阅传统容器链接 。