首页 > 解决方案 > 我如何在两个 docker 容器上使用或映射相同的端口

问题描述

我在 docker_container_1 中运行一个应用程序,其中几个端口被映射到本地。

因此,我可以从本地机器上的 docker_container_1 访问该服务。

现在,我想将服务从 docker_container_1 访问到另一个 docker_container (docker_container_2),但是我无法创建 docker_container_2,因为我无法映射映射到 docker_container_1 的端口。

如何从 docker_1 访问服务绑定到端口(比如 5555)到另一个 docker_2。

标签: docker

解决方案


所以,最初我有两个泊坞窗图像:

    REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
bert_client_api      latest              2fa40dd05152        17 hours ago        841MB
bert_services        latest              1695c35fde34        18 hours ago        2.74GB

我为图像制作了一个容器bert-services,映射了几个端口。

$ sudo docker run -it -v /home/jugs/Desktop/BERT-Pretrained/uncased_L-12_H-768_A-12/1/:/model/ -p 5000:5000 -p 127.0.0.1:5555:5555 -p 127.0.0.1:5556:5556 bert_services /bin/bash

所以我有正在运行的容器:

(myenv) jugs@jugs:~$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                        NAMES
de9bb74a0e04        bert_client_api     "/bin/bash"         9 minutes ago       Up 9 minutes                                                     suspicious_lewin

[我从容器运行托管服务:de9bb74a0e04]

现在,如果我想要来自主机的所有服务(包括容器服务),方法是--net=host使用

$ sudo docker run -it  -v /home/jugs/Desktop/geeksforgeeks/dockerBertClient/:/mydir/ --net=host bert_client_api /bin/bash

现在,你有两个可以轻松通信的容器。

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                        NAMES
de9bb74a0e04        bert_client_api     "/bin/bash"         9 minutes ago       Up 9 minutes                                                     suspicious_lewin
f9d5a35a75bb        bert_services       "/bin/bash"         18 minutes ago      Up 18 minutes       80/tcp, 127.0.0.1:5555-5556->5555-5556/tcp   quizzical_minsky

推荐阅读