gpt4 book ai didi

amazon-web-services - 您如何在 Elastic Beanstalk 应用程序中的 Docker 容器之间共享卷?

转载 作者:行者123 更新时间:2023-12-04 22:30:05 24 4
gpt4 key购买 nike

我正在尝试在 之间共享数据两个 Docker 容器 在多容器 AWS EC2 实例中运行。

通常,我会在运行容器时指定卷作为命令标志,即:docker run -p 80:80 -p 443:443 --link Widget:Widget --volumes-from Widget --name Nginx1 -d nginx1将一个卷从 Widget 共享到 Nginx1。

但是,由于 Elastic Beanstalk 要求您在 dockerrun.aws.json 中指定您的 Docker 配置。文件,然后在内部处理运行您的 docker 容器,我一直无法弄清楚如何在容器之间共享数据量。

请注意,我并没有尝试将 EC2 实例中的数据共享到 Docker 容器中 - 这部分似乎工作正常;相反,我想直接将数据从一个 Docker 容器共享到另一个容器。我知道 docker 容器卷在 "/var/lib/docker/volumes/fac362...80535" 与主机共享等等,但由于这个位置不是静态的,我不知道如何在 dockerrun.aws.json 中引用它。文件。

有没有人找到解决方案或解决方法?

更多信息 dockerrun.aws.json和配置 EB 在这里寻找:http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_v2config.html

谢谢!

最佳答案

要完成您想要的操作,您需要使用 volumesFrom参数正确。您需要确保使用 VOLUME 公开卷。用于共享其内部数据的容器的命令。

这是我用来捆绑一些静态文件以通过网络服务器提供服务的示例 Dockerfile:

FROM tianon/true
COPY build/ /opt/static
VOLUME ["/opt/static"]

现在相关部分 Dockerrun.aws.json :
{
"name": "staticfiles",
"image": "mystaticcontainer",
"essential": false,
"memory": "16"
},
{
"name": "webserver,
...
"volumesFrom" : [
{
"sourceContainer": "staticfiles"
}
]
}

请注意,您不需要任何 volumes Dockerrun.aws.json 文件根目录中的条目,因为该卷仅在两个容器之间共享,而不是在主机上持久化。您也不需要任何特定的 mountPoints包含要共享的卷的容器定义中的键,作为带有 volumesFrom 的容器自动从引用的容器中获取所有卷。在本例中, /opt/static 中的所有文件在 staticfiles容器也将提供给 webserver容器在同一位置。

关于amazon-web-services - 您如何在 Elastic Beanstalk 应用程序中的 Docker 容器之间共享卷?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31278273/

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