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

时间:2018-08-07 19:26:42

标签: docker docker-machine

我有两个正在运行的Docker容器。一个泊坞窗容器正在调用另一个泊坞窗容器,但是在尝试调用应用程序时发生故障。当我在应用程序中输入机器的主机名时,应用程序正在运行。

如果我部署了这两个容器,我又不得不找到那台机器的主机名,然后以任何其他方式放入我的应用程序,这样就可以删除此依赖项,这确实是一个依赖项。

该URL被我的docker容器占用了 http://localhost:8080/userData

与我更新主机名相同,然后它可以正常工作。 http://nl55443lldsfa:8080/userData

但这确实是一个依赖关系,我无法每次都在应用程序内部更改。是否有相同的解决方法?

2 个答案:

答案 0 :(得分:0)

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

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

编辑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

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

答案 1 :(得分:0)

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

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

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

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

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