如何使用与父容器(Docker in Docker)相同的网络?

问题描述 投票:0回答:1

我有一个 docker-compose 文件,其中包含以下服务:

  • Dind(此容器内还有其他容器负责消费 RabbitMQ 队列)
  • RabbitMQ

我希望 Dind 的子容器能够在与 Dind 相同的 docker-compose 文件中使用来自 RabbitMQ 的消息。

version: '3.8'

services:
  dind:
    build:
      context: docker-compose-command-api
      dockerfile: Dockerfile
    container_name: docker-compose-command-api
    privileged: true
    ports:
      - "8080:8080"
    volumes:
      - ./message-consumer-worker:/app/message-consumer-worker:ro
    networks:
      - default

  rabbitmq:
    image: rabbitmq:3.12.10-management
    container_name: rabbitmq
    environment:
      - RABBITMQ_DEFAULT_USER=guest
      - RABBITMQ_DEFAULT_PASS=guest
    ports:
      - "5672:5672"
      - "15672:15672"
    volumes:
      - ./rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf:ro
      - ./rabbitmq/definitions.json:/etc/rabbitmq/definitions.json:ro
    healthcheck:
      test: [ "CMD", "rabbitmqctl", "status" ]
      interval: 5s
      timeout: 20s
      retries: 5
    networks:
      - default

networks:
  default:
    driver: bridge

将在 Dind 内运行的 docker-compose:

version: '3.8'

services:
  app:
    build:
      context: message-consumer-worker
      dockerfile: Dockerfile
    container_name: message-consumer-worker

根据我的研究,可以使用外部网络。但由于缺乏知识,我没有实施。

docker docker-compose dockerfile rabbitmq docker-network
1个回答
0
投票

我认为你需要在 docker-compose 文件中使用

network_mode: host
。这将使内部容器使用与主机(外部容器)相同的网络。

© www.soinside.com 2019 - 2024. All rights reserved.