首页 > 解决方案 > 如何通过 docker swarm 将容器与同一节点上的另一个容器连接起来

问题描述

嘿,我正在尝试使用 compose 文件创建一个 docker swarm

服务“timeservice”通过连接

tcp://localhost:61616

到 ActiveMQ

在没有 docker-swarm 的情况下,我使用以下 compose-file 运行:

version: "3.3"
services:
  ActiveMQ:
    container_name: ActiveMQ
    image: rmohr/activemq
    restart: always
    ports:
      - "61616:61616"
      - "8161:8161"
    networks:
      TutoNetz:
        ipv4_address: 172.20.0.2

  Postgres:
    container_name: Postgres
    image: postgres
    restart: always
    environment:
      POSTGRES_USER: admin
      POSTGRES_PASSWORD: admin
    ports:
      - "5432:5432"
    networks:
      TutoNetz:
        ipv4_address: 172.20.0.3

  HelloJexxa:
    container_name: HelloJexxa
    image: 77f9ab0ef7d2
    restart: always
    ports:
      - "7000:7000"
    networks:
      TutoNetz:
        ipv4_address: 172.20.0.4

  TimeService:
    container_name: TimeService
    image: 93c0aebd3f31
    restart: always
    ports:
      - "7001:7000"
    networks:
      TutoNetz:
        ipv4_address: 172.20.0.5

networks:
  TutoNetz:
    driver: bridge
    ipam:
     config:
       - subnet: 172.20.0.0/16

但是我如何让它在 docker-swarm 环境中运行呢?如何创建这样的网络?同一节点上的所有内容(主节点)

这里是 docker swarm 的 compose-file:

version: "3.8"

services:

  ActiveMQ:
    container_name: ActiveMQ-Swarm
    image: rmohr/activemq
    deploy:
        replicas: 1
    ports:
      - "62626:61616"
      - "8262:8161"
            
  HelloJexxa:
    container_name: HelloJexxa-Swarm
    image: ni920/hellojexxa:latest
    deploy:
        replicas: 3
    ports:
      - "8001:7001"

  Timeservice:
    container_name: Timeservice-Swarm
    image: ni920/timeserviceplain:latest
    deploy:
        replicas: 3
    ports:
      - "7000:7000"      
      
  visualizer:
    container_name: SwarmVisualizer
    image: dockersamples/visualizer
    deploy:
        placement:
            constraints: [node.role == manager]
    ports:
      - 5000:8080
    
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro

我希望你能帮助我。

标签: dockercluster-computingdocker-swarm

解决方案


您可以使用以下命令从 swarm 上的 compose 文件部署堆栈:

docker stack deploy --compose-file docker-compose.yml [stack_name]

参考文档


推荐阅读