Docker 如何在同一网络上运行两个微服务?
我在这里面临一个问题:Docker 如何在同一网络上运行两个微服务?,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我在这里面临一个问题: version: '2' services: ms1: image: somedtr/someorg/somerepo:v0.1 mem_limit: 512M environment: SPRING_PROFILES_ACTIVE: docker-development-cloud JAVA_OPTS: -Xms256m -Xmx512m ports: - "8900:8900" restart:
version: '2'
services:
ms1:
image: somedtr/someorg/somerepo:v0.1
mem_limit: 512M
environment:
SPRING_PROFILES_ACTIVE: docker-development-cloud
JAVA_OPTS: -Xms256m -Xmx512m
ports:
- "8900:8900"
restart: always
networks:
- docker_dev_cloud
networks:
docker_dev_cloud:
driver: bridge
=======================================
version: '2'
services:
ms2:
image: somedtr/someorg/somerepo:v0.1
mem_limit: 512M
environment:
SPRING_PROFILES_ACTIVE: docker-development-cloud
JAVA_OPTS: -Xms256m -Xmx512m
ports:
- "8900:8900"
restart: always
networks:
- docker_dev_cloud
networks:
docker_dev_cloud:
driver: bridge
我试图在docker_dev_cloud上运行该服务,但它不在该网络上运行
当我做docker网络时
ms1_docker_dev_cloud
ms2_docker_dev_cloud
感谢您的帮助,
提前感谢编辑:
OP使用了两个不同的.yaml
文件,并且创建了两个不同的网络,这可能是因为docker compose
使用了带有docker compose.yaml
文件的目录名作为项目名称(默认情况下)。在评论中,建议使用:
docker-compose -p project_name up
原始答复: 我对您的
yaml
做了一点修改,以使其能够工作并可以演示
alpine
图像entrypoint:ping msX
,以便向您显示它们相互pingdocker-compose.yaml(使用
docker-compose-up
运行它):
您可以看到它是有效的,因为ms1和ms2实际上是相互ping的
ubuntu@ubuntu:~/docker_compose_tests/test$ docker-compose up
Creating network "test_docker_dev_cloud" with driver "bridge"
Creating test_ms1_1
Creating test_ms2_1
Attaching to test_ms2_1, test_ms1_1
ms2_1 | PING ms1 (172.22.0.3): 56 data bytes
ms2_1 | 64 bytes from 172.22.0.3: seq=0 ttl=64 time=0.070 ms
ms1_1 | PING ms2 (172.22.0.2): 56 data bytes
ms1_1 | 64 bytes from 172.22.0.2: seq=0 ttl=64 time=0.054 ms
ms2_1 | 64 bytes from 172.22.0.3: seq=1 ttl=64 time=0.286 ms
ms1_1 | 64 bytes from 172.22.0.2: seq=1 ttl=64 time=0.113 ms
ms2_1 | 64 bytes from 172.22.0.3: seq=2 ttl=64 time=0.129 ms
ms1_1 | 64 bytes from 172.22.0.2: seq=2 ttl=64 time=0.086 ms
ms2_1 | 64 bytes from 172.22.0.3: seq=3 ttl=64 time=0.137 ms
ms1_1 | 64 bytes from 172.22.0.2: seq=3 ttl=64 time=0.113 ms
ms2_1 | 64 bytes from 172.22.0.3: seq=4 ttl=64 time=0.246 ms
ms1_1 | 64 bytes from 172.22.0.2: seq=4 ttl=64 time=0.115 ms
ms2_1 | 64 bytes from 172.22.0.3: seq=5 ttl=64 time=0.078 ms
同时还创建了网络,并可以列出:
ubuntu@ubuntu:~/docker_compose_tests/test$ docker network ls
NETWORK ID NAME DRIVER SCOPE
c8562a9231c3 bridge bridge local
412040f6cf69 host host local
1cbabce12616 none null local
59de206c1ffa test_docker_dev_cloud bridge local
从正确格式化代码开始。有一个按钮。@JonathonReinhart格式化了代码谢谢你的回答。在我的例子中,ms1和ms2有两个不同的docker-compose.yml。这就是为什么会有两个不同的网络,分别以
ms1\u
和ms2\u
开始。这可能是文件夹的名称。仍不工作。你能告诉我网络名称前面的test
是怎么来的吗。在我的例子中,它就像ms1\u docker\u dev\u cloud
和ms2\u docker\u dev\u cloud
哪个文件夹?非常感谢您的回答
ubuntu@ubuntu:~/docker_compose_tests/test$ docker network ls
NETWORK ID NAME DRIVER SCOPE
c8562a9231c3 bridge bridge local
412040f6cf69 host host local
1cbabce12616 none null local
59de206c1ffa test_docker_dev_cloud bridge local