我有几个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 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的通过本地主机:6666和container2的可访问container1通过本地主机:5555。
这不是链接,但是无法进行双向链接。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句