Docker 停靠的应用程序需要通过本地主机与其他停靠程序交互

Docker 停靠的应用程序需要通过本地主机与其他停靠程序交互,docker,localhost,docker-networking,Docker,Localhost,Docker Networking,我有一个应用程序,可以启动docker容器并自动执行一些例程。 现在我已停靠此应用程序,它无法通过localhost与其他容器通信。我试着设置 -网络主机 启动容器时,现在无法通过localhost访问容器化webapp: 有任何指针吗?您是否尝试创建公共网桥网络并将容器连接到同一网络: 创建网络:- docker网络创建网络名称 然后在docker run命令中添加此开关-network=networknamelocalhost将不起作用。假设您正在运行一个VM,并尝试与您的主机/在您的机器上

我有一个应用程序,可以启动docker容器并自动执行一些例程。 现在我已停靠此应用程序,它无法通过localhost与其他容器通信。我试着设置 -网络主机 启动容器时,现在无法通过localhost访问容器化webapp:


有任何指针吗?

您是否尝试创建公共网桥网络并将容器连接到同一网络:

创建网络:- docker网络创建网络名称

然后在docker run命令中添加此开关-network=networkname

localhost将不起作用。假设您正在运行一个VM,并尝试与您的主机/在您的机器上运行的其他VM对话。如果您从其中一个VM调用localhost,则它只是该VM的localhost,而不是您的主机。因此,您将无法通过调用localhost从一个VM到另一个VM进行通信。Docker在本地主机上的工作方式相同。你有两个选择

使用网络 如果您正在使用网络,请创建一个网络并将所有容器添加到该网络。这是docker建议的新方法

docker network create <your-network-name>
docker run --network <your-network-name> --name <container-name1> <image>
docker run --network <your-network-name> --name <container-name2> <image>

您可以使用container1与container2进行对话,反之亦然。您可以在诸如DB host等地方使用这些容器名称。

我在查看了许多其他文档后发现了它

步骤1:在容器内安装docker。在我的dockerfile中添加了以下行

RUN curl -sSL https://get.docker.com/ | sh
步骤2:在docker run命令中提供卷映射


现在可以从我的当前容器中访问主机的docker命令,而无需更改当前docker容器的-网络,我就可以通过本地主机访问其他容器

您是否使用编配器(例如Swarm或Kubernetes)运行这些工作负载?目前没有docker Swarm或Kubernetes。问题是webapp可以在容器curl localhost中访问,但是当我使用localhost:port时,它不会显示网页。启动容器时使用-network host时会出现此问题
RUN curl -sSL https://get.docker.com/ | sh
-v /var/run/docker.sock:/var/run/docker.sock