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

让两个容器彼此链接

伊铭
2023-03-14
问题内容

我有几个Docker容器,还有一个特例,其中两个必须互相交谈,因此它们必须通过链接最多彼此了解。我可以将一个容器链接到另一个容器,但是问题是,我不能告诉他们第二个容器可以与第一个容器对话。

我尝试创建并运行第一个容器并将其停止,然后创建了第二个容器并同时将其停止。接下来,我再次启动了第一个容器并链接到第二个容器,并启动了第二个容器并链接到第一个容器。此后,我的机器发疯了,docker进程占用了所有CPU和内存,并且两个容器都无法访问。当您终止该进程时,将弹出一个新的进程。即使当我卸载docker重启机器并再次安装docker时,它也回到了疯狂的状态,甚至没有启动任何一个容器。

有谁能找到一种解决方案,如何将两个容器相互链接或如何使它们在两个方向上相互通信?


问题答案:

推荐的方法是创建一个用户定义的网络,您可以在其中连接多个容器。

使用以下命令可以轻松创建网络:

docker network create -d bridge my-net

创建网络后,您可以像这样启动容器。

第一个容器:

docker run -it --name b1 --network=my-net --rm bash:4.4

第二个容器:

docker run -it --name b2 --network=my-net --rm bash:4.4

bash-4.4# ping b1
PING b2 (172.26.0.3): 56 data bytes
64 bytes from 172.26.0.3: seq=0 ttl=64 time=0.111 ms
64 bytes from 172.26.0.3: seq=1 ttl=64 time=0.336 ms
...

可以在Docker文档中找到有关用户定义网络的更多信息。

另一种 使用链接的方法是通过在每个容器上暴露端口并将容器绑定到 主机 接口来映射容器。

docker run --net=host -p 127.0.0.1:5555:5555 --name container1 my/dockerimage1 
docker run --net=host -p 127.0.0.1:6666:6666 --name container2 my/dockerimage2

这样 container1 可以访问 container2的 通过 本地主机:6666container2的 可访问
container1 通过 本地主机:5555

Docker网络的文档对此进行了进一步说明。



 类似资料:
  • 问题内容: 我必须使用docker-compose设置一个mongo副本集。对于副本集,容器必须彼此了解。 我试过了 我收到一个循环导入消息。但是,如果删除到dbreplicasetpart1的反向链接,则无法从dbreplicasetpart2 ping到dbreplicasetpart1。解决办法是什么? 问题答案: 为Docker 1.10更新 Docker 1.10允许在compose文件

  • 问题内容: 我要两个紧挨着。右边大约200px;并且左侧必须填满屏幕的其余宽度?我怎样才能做到这一点? 问题答案: 您可以使用 flexbox 布置物品: 这基本上只是刮擦flexbox的表面。Flexbox可以做很多令人惊奇的事情。 对于较旧的浏览器支持,可以使用CSS float 和 width 属性来解决它。

  • 问题内容: 我有一个带有以下行的Bottle Webserver模块: 该模块包含以下行: 当然,两者都分别导致以下错误: ImportError:无法导入名称auto_process_form_insert ImportError:无法导入名称重定向 难道仅仅是一个事实,在Python中,两个模块不能互相导入,并且所有模块的导入本质上必须是分层的,还是我做错了什么?另外,是否有一种解决方法,不能

  • 问题内容: 我有2个这样的Int类型的数组 我想添加每个数组的元素,例如arrayFirst [0] + arraySecond [0],arrayFirst [1] + arraySecond [1]等,然后将其分配给另一个数组,因此数组的结果将类似于 [5、7、24、29] 什么是实现这一目标的最佳实践 问题答案: 您可以像这样添加两个数组

  • 问题内容: 是否有类似于“不等于”的方法? 我要完成的示例如下: 我试图找到不需要我使用的东西。 问题答案: 只需输入一个“!” 在布尔表达式前面

  • 问题内容: 我希望两个div在包装div中彼此相邻。在这种情况下,绿色div的高度应确定包装纸的高度。 我如何通过CSS实现呢? 问题答案: 浮动一个或两个内部div。 浮动一格: 或者如果您同时浮动两个子元素,则需要鼓励包装器div包含两个浮动子元素,否则它会认为它是空的而不是在它们周围放置边框 浮动两个div: