Kyl*_*dha 4 amazon-ec2 amazon-web-services docker amazon-elastic-beanstalk
我正在尝试在多容器 AWS EC2实例中运行的两个Docker容器之间共享数据.
通常情况下,我会在运行容器时将音量指定为命令标志,即: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"]
Run Code Online (Sandbox Code Playgroud)
现在相关部分Dockerrun.aws.json
:
{
"name": "staticfiles",
"image": "mystaticcontainer",
"essential": false,
"memory": "16"
},
{
"name": "webserver,
...
"volumesFrom" : [
{
"sourceContainer": "staticfiles"
}
]
}
Run Code Online (Sandbox Code Playgroud)
请注意,您不需要volumes
Dockerrun.aws.json文件根目录中的任何条目,因为该卷仅在两个容器之间共享,而不是在主机上保留.您还不需要mountPoints
容纳共享卷的容器定义中的任何特定键,因为容器会volumesFrom
自动从引用的容器中获取所有卷.在此示例中,容器/opt/static
中的所有文件staticfiles
也可用于webserver
同一位置的容器.
归档时间: |
|
查看次数: |
2652 次 |
最近记录: |