我没有找到解决单独任务定义中的两个容器可以相互通信的解决方案。因此,我按照答案将两个容器链接到相同的任务定义中,效果很好。首先感谢您的回答。
但是,当我阅读 ECS 文档时,发现以下段落让我感到困惑:
并置在单个容器实例上的容器可能无需链接或主机端口映射即可相互通信。使用安全组和 VPC 设置在容器实例上实现网络隔离。
但我无法找到如何实现这一目标的进一步文档。我知道 docker 社区尝试使用--network并弃用--link. 我不确定 AWS 是否会进行一些更改以某种方式启用这些功能。
有人可以帮助我了解如何实现这一目标吗?因为容器名称和 IP 总是由 ECS 动态分配,如果在没有链接和端口映射的不同任务定义中,我如何从一个容器到另一个容器通信?
我正在学习 docker 并阅读他们的章节“管理容器中的数据”。在“将主机目录安装为数据卷”中。他们提到了以下段落:
除了使用 -v 标志创建卷之外,您还可以将目录从 Docker 引擎的主机挂载到容器中。
$ docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py
Run Code Online (Sandbox Code Playgroud)
此命令将主机目录 /src/webapp 挂载到位于 /opt/webapp 的容器中。如果路径 /opt/webapp 已存在于容器映像中,则 /src/webapp 挂载会覆盖但不会删除预先存在的内容。移除挂载后,即可再次访问内容。这与 mount 命令的预期行为一致。
实验一
然后,当我尝试运行此命令并尝试检查容器时,我发现该容器实际上甚至没有运行。然后我使用docker logs web并发现这个错误:
can't open file 'app.py': [Errno 2] No such file or directory 我假设 /src/webapp 挂载在 /opt/webapp 上,没有内容。
问题 1 如何删除此安装并检查内容是否仍然如报价所述?
实验二
当我尝试运行 $ docker run -d -P --name web2 -v newvolume:/opt/webapp training/webapp python app.py 时,我发现容器运行正常。然后我使用docker exec -it web2 /bin/bash并发现所有现有的内容仍然在/opt/webapp 中。我也可以在这里添加更多文件。所以在这种情况下,看起来音量不是叠加的而是组合的。如果我使用docker inspect …