gpt4 book ai didi

docker - 让两个容器相互链接

转载 作者:IT老高 更新时间:2023-10-28 12:43:32 26 4
gpt4 key购买 nike

我有几个 docker Containers 和一个特殊情况,它们中的两个必须相互通信,所以它们最多只能通过链接相互了解。我可以将一个 Container 链接到另一个,但问题是,我不能告诉他们第二个可以与第一个对话。

我尝试创建并运行第一个容器并停止它,然后我创建并启动了第二个容器并停止了它。接下来,我再次启动第一个容器,并链接到第二个,并启动第二个链接到第一个。在此之后,我的机器发疯了,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 docs about user-defined networks 中找到.


另一种使用链接的可能方法是通过在每个容器上公开一个端口并将容器绑定(bind)到主机接口(interface)来映射容器。

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可以通过localhost:6666访问container2container2可以访问container1 通过 localhost:5555.

这是不是链接,但有no way to do bidirectional linking .

documentation for docker networking进一步解释这一点。

关于docker - 让两个容器相互链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27563460/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com