繁体   English   中英

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

[英]Docker container not able to call another running docker container from localhost?

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

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

我的docker容器使用了该URL,而该Docker容器的 http:// localhost:8080 / userData 失败

当我用我的主机名更新时,它也一样。 HTTP:// nl55443lldsfa: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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM