【问题标题】:Creating a network on docker swarm between docker-compose applications and other containers在 docker-compose 应用程序和其他容器之间在 docker swarm 上创建网络
【发布时间】:2016-10-13 15:20:47
【问题描述】:

所以,假设我有一个部署到 Docker Swarm 的应用程序,它有一个看起来像这样的 compose 文件:

version: '2'

services:
  postgres:
    image: postgres
    environment: 
      - POSTGRES_PASSWORD=password
    networks:
      - app-network
    volumes: 
      - postgres:/var/lib/postgresql/data

  myapp:
    container_name: 'myapp'
    image: myapp:debug
    depends_on:
      - postgres
    build:
      context: .
      dockerfile: Dockerfile.debug
    networks:
      - app-network

networks:
  app-network:
    driver: bridge

volumes:
  postgres:

也许我想部署几个这样的应用程序,它们通过 rabbitmq 容器进行通信。我想我可以像这样在 swarm 上创建一个网络:

$ docker network create -d overlay common-network

然后我可以像这样配置一个 rabbitmq 实例:

$ docker run -d \
--hostname rabbit \
--name rabbit \
-e RABBITMQ_ERLANG_COOKIE='bleh' \
-e RABBITMQ_DEFAULT_USER='rabbitmq' \
-e RABBITMQ_DEFAULT_PASS='rabbitmq' \
-e RABBITMQ_DEFAULT_VHOST='/' \
rabbitmq:3

然后部署我的应用程序:

$ docker-compose up

但是,应用程序似乎无法访问“兔子”。

$ docker network ls
NETWORK ID          NAME                                                 DRIVER              SCOPE
176e455e8215        common                                               overlay             global
8f1b14690f2b        swarm-agent-40001BF7000000/bridge                    bridge              local
3cfaae53a0dc        swarm-agent-40001BF7000000/host                      host                local
a01b27b94fcc        swarm-agent-40001BF7000000/none                      null                local
aa6f5b56a6d3        swarm-agent-40001BF7000000/publish_app-network   bridge              local

应用程序可以看到在同一个 compose 文件中定义的服务(如上所示),但他们无法看到除此之外的服务。

我怎样才能在同一个网络上获取所有应用程序?

编辑 1 我也尝试将撰写文件更改为:

networks:
      - app-network
      - common

networks:
  adapter-network:
    driver: bridge
  common:
    external: true

【问题讨论】:

    标签: docker docker-compose docker-swarm docker-networking


    【解决方案1】:

    所以,事实证明我只需要使用 --net 参数创建 rabbitmq 服务:

    docker run -d \
    --hostname rabbit \
    --name rabbit \
    --net common \
    -e RABBITMQ_ERLANG_COOKIE='blah' \
    -e RABBITMQ_DEFAULT_USER='rabbitmq' \
    -e RABBITMQ_DEFAULT_PASS='rabbitmq' \
    -e RABBITMQ_DEFAULT_VHOST='/' \
    rabbitmq:3
    

    在撰写文件中引用“公共”网络:

    networks:
          - app-network
          - common
    
    networks:
      adapter-network:
        driver: bridge
      common:
        external: true
    

    【讨论】:

      猜你喜欢
      • 2023-04-04
      • 1970-01-01
      • 2016-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-22
      • 1970-01-01
      相关资源
      最近更新 更多