gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 19:23:50 24 4
gpt4 key购买 nike

如何让 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com