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
    图像
  • 我已经将两个8900端口中的一个更改为8901,因为您无法绑定它两次(您可以使用它们的8900端口运行任意多个容器,但您的主机只有一个8900端口)
  • 我添加了
    entrypoint:ping msX
    ,以便向您显示它们相互ping

  • docker-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