【问题标题】:Docker container cannot connect to linked containers servicesDocker 容器无法连接到链接的容器服务
【发布时间】:2016-02-11 23:04:30
【问题描述】:

我在 Ubuntu 14.04 服务器主机上使用 Docker 版本 1.9.1 构建 a34a1d5,我有 4 个容器:redis(基于 alpine linux 3.2)、mongodb(基于 alpine linux 3.2)、postgres(基于 ubuntu 14.04 ) 以及将运行连接到这些其他容器的应用程序的应用程序(基于 alpine linux 3.2)。所有的 db 容器都在 Dockerfile 中公开了它们对应的端口。

我对数据库容器进行了修改,因此它们的服务不会绑定到本地主机 IP,而是绑定到所有地址。这样我就可以从应用程序容器连接到所有这些。 为了测试,我首先运行数据库容器,然后使用如下命令运行应用程序:

docker run --rm --name app_container --link mongodb_container --link redis_container --link postgres_container  -t localhost:5000/app_image

我进入应用程序容器的终端,并验证其 /etc/hosts 文件是否包含其他容器的 IP 和名称。然后我可以 ping 所有的数据库容器。但我无法将他们的端口连接到任何数据库容器。

一个简单的:telnet mongodb_container 27017 只是坐下来永远等待,如果我尝试连接到其他数据库容器,也会发生同样的情况。如果我运行该应用程序,它还会抱怨它无法连接到指定的数据库服务。

重要提示:我可以从主机远程登录所有数据库容器的相应端口。

可能会发生什么?

编辑:我将包含 db 容器的运行命令:

docker run --rm --name mongodb_container -t localhost:5000/mongodb_image
docker run --rm --name redis_container -t localhost:5000/redis_image
docker run --rm --name postgres_container -t localhost:5000/postgres_image

【问题讨论】:

  • 你能包含所有这些其他容器的运行命令吗?您是否公开了正确的端口并使用了-p port:port 标志?
  • 尝试nslookup mongodb_container 或ping mongedb_container 看看它是否正在解析IP。 --link 参数应该在容器内的主机文件中写入一个条目,使它们能够解析。只是为了完整性...您可以像这样在容器中运行 shell:docker exec -it <CONTAINER_NAME> /bin/bash
  • @cricket_007,当然,我添加了运行命令,我在测试时停止了 mongo 容器,然后在其运行命令中添加了-p 27017:27017,但它仍然无法连接。在仔细检查 Dockerfile 之后,我公开了正确的端口。
  • @KevinBurdett,是的,从应用程序容器中,我可以 ping 所有其他容器,并且它们的 IP 已正确解析。是的,我使用docker exec -it app_container bash 进入我的应用容器。
  • 我看到了这个帖子:stackoverflow.com/questions/31481530/… 并且 OP 的最后一条评论是“奇怪。也许 1.7.1 在 Ubuntu 14.04 上运行不佳?它现在对我有用,因为我降级了所以我’我要继续前进。”。也许我正在遭受同样的影响?

标签: docker


【解决方案1】:

好吧,telnet 的问题似乎与 alpine linux 上的 telnet 客户端有关,因为以下两个命令显示容器上的端口是打开的:

nmap -p27017 172.17.0.3
nc -vz 172.17.0.3 27017

主要关注我发出的telnet命令,我认为问题与端口被关闭或其他有关;我忽略了应用程序上用于将其连接到服务的配置文件(这是错误的文件名),我的错。

现在一切正常。

【讨论】:

    猜你喜欢
    • 2021-08-21
    • 1970-01-01
    • 2022-12-09
    • 2020-02-18
    • 2018-01-25
    • 2020-02-29
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多