docker - AWS ECS如何在私有(private)桥接网络中启动容器

标签 docker docker-compose amazon-ecs

如何让 docker 自动服务发现在基于 AWS ECS EC2 的集群服务中运行?

我有相应的 docker-compose.yml(我正在将其映射到与 ECS 兼容的 task-definition.json 文件):

version: "3"
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.2.2
    environment:
      - discovery.type=single-node
  mongo:
    image: mongo:4.0.12
  redis:
    image: redis:5.0.3
  api:
    image: api
    build: .
    command: api.py
    depends_on:
      - elasticsearch
      - mongo
      - redis
    ports:
      - 5000:5000

如果我使用 docker-compose up 启动它,docker-composer 将创建一个新的私有(private)桥接网络。在此专用网络中,“自动服务发现”处于开启状态,服务名称解析为服务 IP 地址。因此,例如 api 可以在不知道其 IP 的情况下通过对“mongo”执行 DNS 查找来找到 mongo。该网络还与其他不相关的容器隔离。您也可以像这样通过 docker 手动执行此操作:

docker network create api-net
docker run -d --name elasticsearch --net api-net docker.elastic.co/elasticsearch/elasticsearch:6.2.2
docker run -d --name mongo --net api-net mongo:4.0.12
...

但我无法弄清楚如何通过使用 task-definition.json 文件定义的 AWS ECS 多容器服务实现相同的目标。如果我使用“桥接”网络定义多个服务,所有容器都会启动到默认桥接网络中,并且自动服务发现不起作用。我可以手动登录 ECS EC2 容器实例并设置私有(private)网络,但显然不是可行的解决方案。

最佳答案

你需要使用:

"links": ["name:internalName", ...]

查看更多here网络设置

另请参阅此注释:

Important

Containers that are collocated on a single container instance may be able to communicate with each other without requiring links or host port mappings. Network isolation is achieved on the container instance using security groups and VPC settings.

关于docker - AWS ECS如何在私有(private)桥接网络中启动容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57869934/

相关文章:

amazon-web-services - RouteTable 使用 cloudformation 创建两次 - ECS

git - 如何使用 Dockerfile 克隆 git repo

oracle - 带有 oracle 12c 的 Windows 的 Docker 镜像

java - Docker + Spring Boot 错误 : could not create Vfs. 来自 url 的目录

Docker 网络 : how to show connected containers names

python - Django:在Docker上连接到PostgreSQL DB时出现OperationalError

docker - 无法访问Docker容器中的Spring Boot API

spring-boot - 无法连接到 Eureka 服务器 - Spring Boot | Eureka | docker

asp.net - 通过 AWS ECS 在 Docker 中 Multi-Tenancy 部署 WebForms 应用程序的 Web.Config 转换

amazon-web-services - Cloudwatch 失败调用错误 无可用日志