当前位置: 首页 > 面试题库 >

如何在容器之间创建双向链接?

徐洛华
2023-03-14
问题内容

我必须链接两个容器,以便它们可以互相看到。当然以下…

docker run -i -t --name container1 --link container2:container2 ubuntu:trusty /bin/bash
docker run -i -t --name container2 --link container1:container1 ubuntu:trusty /bin/bash

…在第1行失败,因为容器需要启动并运行才能成为链接目标:

2014/08/15 03:20:27 Error response from daemon: Could not find entity for container2

创建双向链接的最简单方法是什么?


问题答案:

Docker
1.10通过引入高级容器网络很好地解决了这一问题。(详细信息:https
:
//docs.docker.com/engine/userguide/networking/dockernetworks/)


首先,创建一个网络。下面的示例创建一个基本的“桥接”网络,该网络仅在一台主机上工作。您可以查看Docker的更完整的文档,以使用覆盖网络在主机之间执行此操作。

docker network create my-fancy-network

现在,1.10中的Docker网络在容器内部创建了一种特殊的DNS解析,可以以特殊的方式解析名称。首先,您可以继续使用–
link,但是正如您所指出的那样,您的示例无效。我建议在docker运行命令中使用–net-alias =:

docker run -i -t --name container1 --net=my-fancy-network --net-alias=container1 ubuntu:trusty /bin/bash
docker run -i -t --name container2 --net=my-fancy-network --net-alias=container2 ubuntu:trusty /bin/bash

请注意,使用–name container2设置容器名称,这还会创建一个DNS条目,而–net-alias =
container2只是在网络上创建一个DNS条目,因此在此特定示例中,您可以省略–net-
alias,但是如果您想重命名容器,但仍具有与容器名称不匹配的DNS别名,则将其保留在此处。

(此处的详细信息:https : //docs.docker.com/engine/userguide/networking/configure-
dns/)

在这里,您去:

root@4dff6c762785:/# ping container1
PING container1 (172.19.0.2) 56(84) bytes of data.
64 bytes from container1.my-fancy-network (172.19.0.2): icmp_seq=1 ttl=64 time=0.101 ms
64 bytes from container1.my-fancy-network (172.19.0.2): icmp_seq=2 ttl=64 time=0.074 ms
64 bytes from container1.my-fancy-network (172.19.0.2): icmp_seq=3 ttl=64 time=0.072 ms

并从container1

root@4f16381fca06:/# ping container2
PING container2 (172.19.0.3) 56(84) bytes of data.
64 bytes from container2.my-fancy-network (172.19.0.3): icmp_seq=1 ttl=64 time=0.060 ms
64 bytes from container2.my-fancy-network (172.19.0.3): icmp_seq=2 ttl=64 time=0.069 ms
64 bytes from container2.my-fancy-network (172.19.0.3): icmp_seq=3 ttl=64 time=0.062 ms


 类似资料:
  • 我只想创建双链接列表并检查它是否为空。请说出错误。显示的错误是:在函数empty()中,head和tail超出范围。在类Dict中定义为struct时不起作用。

  • 我已经下载了最新版本的eclipse和最新版本的javafx,创建了一个包含所有javafx文件的新用户库(我已经使用了本教程)。 我注意到,与旧的eclipse版本不同,在最新的eclipse中没有“场景构建器路径”设置,当我试图创建新项目时,也没有“JavaFX项目”(我记得有这个选项可以自动创建一个fxml文件和控件,主类) (我知道有一种叫做e(fx)clipse的东西,但我认为它已经过时

  • 问题内容: 如何创建一个链接到? 假设已在下方建立,而您目前在中。当您这样做时,您将直接转到。 问题答案: 符号或软链接(文件或目录,更灵活,可自我记录) 硬链接(仅文件,灵活性较差且无法自我记录) 详细信息:man ln 就像一个新目录。要避免出现 “不是目录:没有这样的文件或目录” 错误,例如@trlkly注释,请在目标中使用相对路径,即使用示例:

  • 问题内容: 我有一个片段,比如,和自定义。我在此适配器中为列表行中的按钮设置。 按下按钮时,我需要通知片段。如何调用此接口? 请帮助。 问题答案: 创建一个新的构造函数和一个实例变量: 制作适配器时,将为实例变量提供适当的引用以进行保存。 要通过点击调用片段,请执行以下操作: 制作时,您还必须将片段传递给适配器。例如 因为this它将引用您的Fragment,现在是。 请记住,在片段更改的方向上,

  • 问题内容: 我正在尝试在两个隔离的控制器和一个共享服务(提供另一个隔离范围)之间创建双向数据绑定: 小提琴:http : //jsfiddle.net/akashivskyy/MLuJA/ 当应用程序启动并正确更新到时,但是以后,如果我更改其中任何一个,这些更改都不会在这三个范围中反映出来。 如何绑定它们? PS:如果有比返回范围更好的方法,并且仍然可以访问事件并观察功能(基本上无需重写它们),请

  • 问题内容: 是否可以为SQL Server的链接服务器之类的功能创建/配置MySQL? 如果是,请告诉我如何?我正在使用MySQL 5.5。 问题答案: MySQL的FEDERATED引擎提供的功能类似于SQL Server的链接服务器(和Oracle的dblink)功能,但不支持连接到MySQL以外的供应商。从这个问题尚不清楚,是否需要功能来连接到除MySQL以外的供应商。 您可能需要研究MyS