【问题标题】:Docker communication between containers容器之间的 Docker 通信
【发布时间】:2020-01-29 21:44:28
【问题描述】:

我想创建两个容器并从一个容器连接到另一个容器,但我没有这样做。 我的 docker-compose.yml:

version: '3.3'

networks:
  my_network:

services:
  test:
    image: ubuntu:latest
    command: sleep infinity
    networks:
      - my_network
  nginx:
    image: nginx:latest
    ports:
        - 80:80
    networks:
      - my_network

为了测试连接,我在主机上运行echo "" > /dev/tcp/0.0.0.0/80,一切正常; 然后我在第二个容器test 内做同样的事情; 我明白了

echo "" > /dev/tcp/0.0.0.0/80
bash: connect: Connection refused
bash: /dev/tcp/0.0.0.0/80: Connection refused

任何想法我做错了什么?

【问题讨论】:

  • 您的 test 容器没有在端口 80 上运行任何东西。您的 nginx 容器正在运行。你可能想要echo "" > /dev/tcp/nginx/80
  • @larsks 我明白了:bash: nginx: Name or service not known
  • 您是在 host 上还是在容器 test 内运行命令?
  • @larsks 我的实际容器名称与我发布的不同,所以我把它们搞砸了。谢谢。

标签: docker docker-compose


【解决方案1】:

您可以使用服务名称(在您的情况下为 testnginx)从一个容器连接到另一个容器。例如在nginx 容器中你可以运行:

$ echo "" > /dev/tcp/test/<port>

您甚至不需要在docker-compose.yml 中公开端口。

如果您想使用不同的主机名连接到容器,您可以使用aliases

【讨论】:

  • 我明白了:curl: (6) Could not resolve host: test
  • edit:更新了命令以更好地反映您的问题。您确定两个容器都在同一个网络中并且正在运行吗?
  • 还是不行:bash: test: Name or service not known
  • @Rugnar 试试ping test。收到回复了吗?
  • @leopal 我在 test 容器内运行 ping:ping: test: Name or service not known,同样适用于 nginx ping: nginx: Name or service not known
猜你喜欢
  • 2017-10-17
  • 1970-01-01
  • 1970-01-01
  • 2018-04-30
  • 2021-05-03
  • 1970-01-01
  • 2015-04-18
  • 2020-04-12
  • 1970-01-01
相关资源
最近更新 更多