使用 docker-compose 并启动容器,但其中一个容器无法连接到其他容器
Using docker-compose and starting containers but one of the containers not able to connect to other
我正在使用 docker-compose 来启动两个容器(名为 fd 和 fl4j)。第二个容器在启动时连接到第一个容器。
如果我只使用“主机”网络,并且简单的“docker 运行”一切正常。
使用 docker-compose 和定义的桥接网络 (loggernw),第二个容器无法连接到第一个容器。可能不相关但说明 - 第二个容器是 java spring-boot app.
附加信息:即使没有 docker-compose 但使用“docker 运行”和定义的桥接网络,连接尝试也会失败。此外,在第二个应用程序中,我使用字符串“127.0.0.1”尝试连接。
docker-写在下面-
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
可能第二个容器在第一个 运行 正确连接之前尝试连接。
尝试在第二个容器中使用 depends_on,如下所示。
但是,我认为这只会阻止第二个容器在第一个容器启动之前启动。您仍然可能遇到问题,因为第一个没有及时完成启动。然后你的服务在第二个必须做一些重试。所以也许 restart: always 就足够了。
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/
我正在使用 docker-compose 来启动两个容器(名为 fd 和 fl4j)。第二个容器在启动时连接到第一个容器。
如果我只使用“主机”网络,并且简单的“docker 运行”一切正常。
使用 docker-compose 和定义的桥接网络 (loggernw),第二个容器无法连接到第一个容器。可能不相关但说明 - 第二个容器是 java spring-boot app.
附加信息:即使没有 docker-compose 但使用“docker 运行”和定义的桥接网络,连接尝试也会失败。此外,在第二个应用程序中,我使用字符串“127.0.0.1”尝试连接。
docker-写在下面-
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
可能第二个容器在第一个 运行 正确连接之前尝试连接。 尝试在第二个容器中使用 depends_on,如下所示。 但是,我认为这只会阻止第二个容器在第一个容器启动之前启动。您仍然可能遇到问题,因为第一个没有及时完成启动。然后你的服务在第二个必须做一些重试。所以也许 restart: always 就足够了。
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/