覆盖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
有两个区别:
- 使用
--net-alias
,一个容器只有在同一个networking上才能访问另一个容器。 换句话说,除了--net-alias foo
和--net-alias bar
,在使用--net foobar_net
创build--net foobar_net
创buildnetworking之后,您需要使用--net foobar_net
启动这两个容器。 - 使用
--net-alias foo
,同一networking中的所有容器都可以使用别名foo
访问容器。 使用--link
, 只有链接的容器可以通过名称foo
到达容器。
历史上, --link
是在libnetwork
和所有与networking相关的function之前创build的。 在libnetwork
之前,所有的容器都运行在同一个bridge
,并且--link
只添加名称到/etc/hosts
。 然后,添加了自定义networking,并--link
了用户定义networking中的--link
行为 。
有关--link
更多信息,另请参阅传统容器链接 。