配置Docker容器以访问Internet和其他Docker容器

问题描述

我在Windows上使用docker,并有一个docker compose文件,该文件正在创建几个客户应用程序以及 RabbitMq Seq 容器。例如,它们都通过docker-compose在本地网络上创建的实例名称相互交谈;

version: '3.4'

services:
  legacydata.workerservice:
    container_name: legacydata.workerservice
    image: ${DOCKER_REGISTRY-}legacydataworkerservice
    build:
      context: .
      dockerfile: LegacyData.Worker/Dockerfile
    depends_on:
      - rabbitmq

  legacydata.consumer:
    container_name: legacydata.consumer
    image: ${DOCKER_REGISTRY-}legacydataconsumer
    build:
      context: .
      dockerfile: LegacyData.Consumer/Dockerfile
    depends_on:
      - rabbitmq

  rabbitmq:
    image: rabbitmq:3-management-alpine
    container_name: rabbitmq
    environment:
      - RABBITMQ_ERLANG_COOKIE='secretcookie'
      - RABBITMQ_DEFAULT_USER=user
      - RABBITMQ_DEFAULT_PASS=password        
    ports:
      - 5672:5672
      - 15672:15672

## Move Seq to Azure ACI
#  seq:
#    image: datalust/seq:latest
#    container_name: seq
#    ports:
#      - 5341:80
#    environment:
#      ACCEPT_EULA: Y

我想将Seq实例移到Azure ACI(我正在运行它,并且可以按预期访问它,例如http://myseq.southuk.azurecontainer.io)。

如何配置docker以允许我的本地容器相互访问和访问Internet资源?

解决方法

实际上,您可以创建一个包含所有容器的容器组,一个容器组内的容器可以通过其暴露的端口相互通信。您遵循示例here。默认情况下,这些容器也可以毫无问题地访问Internet。

唯一的问题是,您需要自己从Dockerfile本地创建所有映像。 ACI不支持为您创建图像。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...