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

llew8vvj  于 5个月前  发布在  Docker
关注(0)|答案(2)|浏览(106)

我有一个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(DinD)中运行Docker,因为在Docker中,我有一个负责扩展消费者的API。例如,API接收到一个扩展10个消费者的请求,然后它使用“docker compose up”命令创建容器。这就是为什么我需要在Docker中运行Docker以使我的消费者可扩展。你有什么其他建议可以帮助我吗?

gzszwxb4

gzszwxb41#

我认为你需要在docker-compose文件中使用network_mode: host。这将使内部容器使用与主机(外部容器)相同的网络。

bqjvbblv

bqjvbblv2#

Docker网络特定于Docker守护进程的示例。如果您正在运行Docker中的Docker设置,则嵌套的Docker守护进程具有自己的映像,容器,卷和网络;您不能在两个Dockers之间共享任何这些资源。Compose external: true网络允许一个Compose文件附加到在此特定Compose文件之外创建的网络,但在其他Docker守护进程中却没有。Docker Hub docker image显然没有提供任何类似Docker Desktop上可用的host.docker.internal主机名的东西来调用守护进程的网络环境。
这里最简单的答案是在同一个Compose文件中运行RabbitMQ broker和worker。这里不需要嵌套的Docker守护进程,我可能会完全删除DinD容器。

version: '3.8'
services:
  rabbitmq: { ... }
  app:
    build: message-consumer-worker

字符串

相关问题