【问题标题】:Difference between --link and --alias in overlay docker network?覆盖docker网络中--link和--alias之间的区别?
【发布时间】:2016-07-03 02:43:03
【问题描述】:

我正在阅读this Docker 0.10.3 官方文档(此时它还在一个分支中),上面写着:

--net-alias=ALIAS

除了上述的 --name 之外,一个容器是通过一个或多个配置的 --net-alias(或 docker network connect 命令中的 --alias)在用户定义的网络中发现的。嵌入式 DNS 服务器维护所有容器别名与其在特定用户定义网络上的 IP 地址之间的映射。通过使用 docker network connect 命令中的 --alias 选项,一个容器可以在不同的网络中拥有不同的别名。

--link=CONTAINER_NAME:ALIAS

在运行容器时使用此选项会为嵌入式 DNS 提供一个名为 ALIAS 的额外条目,该条目指向由 CONTAINER_NAME 标识的容器的 IP 地址。使用 --link 时,嵌入式 DNS 将保证本地化查找结果仅在使用 --link 的容器上。这让新容器内的进程无需知道其名称或 IP 即可连接到容器。

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

【问题讨论】:

    标签: networking docker dns


    【解决方案1】:

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

    1. 使用--net-alias,只有在同一网络上的一个容器才能访问另一个容器。也就是说,除了--net-alias foo--net-alias bar之外,在用docker network create foobar_net创建网络后,还需要用--net foobar_net启动这两个容器。
    2. 使用--net-alias foo,同一网络中的所有 容器可以使用其别名foo 访问容器。使用--link只有链接的容器可以使用名称foo 访问容器。

    从历史上看,--link 是在 libnetwork 和所有与网络相关的功能之前创建的。在libnetwork之前,所有容器都运行在同一个网络bridge,而--link只是给/etc/hosts加了名字。然后,添加了自定义网络和the behavior of --link in user-defined networks was changed

    有关--link 的更多信息,另请参阅Legacy container links

    【讨论】:

    • 完美答案!不知道单个链接和别名之间的区别,以便其他容器可以访问它。
    猜你喜欢
    • 2017-05-08
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 2012-10-31
    • 1970-01-01
    相关资源
    最近更新 更多