码头工人容器无法从本地主机调用另一个正在运行的码头工人容器?



我有两个正在运行的docker容器。一个 docker 容器正在调用另一个 docker 容器,但在尝试调用应用程序时中断。当我在应用程序中提供我的机器主机名时。应用程序正在工作。

如果我部署这两个容器,这确实是一个依赖项,我必须再次找到该机器的主机名,然后以任何其他方式放入我的应用程序中,以便可以删除此依赖项。

此 url 由我的 docker 容器使用,该容器 http://localhost:8080/userData

当我使用我的主机名更新时也是如此,然后它正在工作。 http://nl55443lldsfa:8080/userData

但这确实是一个依赖项,我不能每次都在我的应用程序中更改。有什么解决方法是相同的。

您应该使用 docker-compose 来运行这两个容器,并使用 yaml 文件上的 link 属性链接它们。

这可能是一个很好的例子:

web:
    image: nginx:latest
    ports:
        - "8080:8080"
    links:
        - php
php:
    image: php

然后,每个容器的 ip 将与两个容器的/etc/hosts 文件中的服务名称相关联,您只需使用该主机名即可从容器内部访问它们。

此外,请确保正确映射端口,如果正确映射端口并且服务正在运行,则使用 http://localhost:8080 应该不会失败。

运行两个容器时,将它们放在同一个网络中。只有这样,您才能使用主机名进行容器间通信。

编辑:当然,将容器命名为容器,这样您就不会每次都获得随机的容器名称。

编辑 2:命令是:

$ docker network create -d bridge my-bridge-network
$ docker run -d 
         --name webserver 
         --network=my-bridge-network 
         nginx:latest
$ docker run -d 
         --name dbserver 
         --network=my-bridge-network 
         mysql:5.7

使用指定主机名和公共网络启动的容器可以在内部使用主机名相互通信。

最新更新