使用docker-compose和启动容器,但其中一个容器无法连接到其他容器

时间:2020-06-27 12:54:24

标签: docker docker-compose docker-networking

我正在使用docker-compose启动两个容器(名为fd和fl4j)。第二个容器在启动时会连接到第一个容器。

如果我只是使用“主机”网络,而普通的“ docker run”则一切正常。

使用docker-compose和已定义的网桥网络(loggernw),第二个容器无法连接到第一个容器。可能不相关,但请说明-第二个容器是一个Java spring-boot应用程序。

其他信息:即使没有docker-compose,但使用“ docker run”和定义的网桥网络,连接尝试也会失败。另外,在第二个应用程序中,我使用字符串“ 127.0.0.1”尝试连接。

docker-compose below-

version: '3.8'
services:
  fd:
    image: fluentwithes
    container_name: fd
    ports:
      - 24224:24224
    expose:
      - "24224"
    volumes:
      - /home/hrishikesh/work/bitbucket/logger/integration/docker/runs/fluentd:/fluentd/etc
    networks:
      - loggernw
  fl4j:
    image: fluentl4java
    container_name: fl4j
    ports:
      - 9090:9090
    expose:
      - "9090"
    networks:
      - loggernw
networks:
  loggernw:
    driver: bridge

1 个答案:

答案 0 :(得分:2)

第二个容器可能在第一个容器正常运行之前尝试连接。 尝试在第二个容器中使用 depends_on ,如下所示。 但是,我认为这只能防止第二个容器在第一个容器开始之前启动。您仍然可能遇到问题,因为第一个未及时完成启动。然后,您的第二个服务必须重试一些。因此,也许重启:总是就足够了。

version: '3.8'
services:
  fd:
    image: fluentwithes
    container_name: fd
    ports:
      - 24224:24224
    expose:
      - "24224"
    volumes:
      - /home/hrishikesh/work/bitbucket/logger/integration/docker/runs/fluentd:/fluentd/etc
    networks:
      - loggernw
  fl4j:
    depends_on: 
      - fd
    restart: always
    image: fluentl4java
    container_name: fl4j
    ports:
      - 9090:9090
    expose:
      - "9090"
    networks:
      - loggernw
networks:
  loggernw:
    driver: bridge

编辑:

127.0.0.1我认为是错误的。您想在其中放置服务名称。 Ip可能会更改。 尝试放入第二个容器“ fd:24224”作为连接字符串。 在此处找到更多信息。 https://docs.docker.com/network/bridge/