linux – 如何使用非默认运行参数在AWS Elastic Beanstalk中运行Docker容器?

linux – 如何使用非默认运行参数在AWS Elastic Beanstalk中运行Docker容器?,第1张

概述我有一个Docker容器,可以在我的本地开发机器上运行.我想将其移至AWS Elastic Beanstalk,但我遇到了一些麻烦. 我正在尝试使用s3fs将S3存储桶安装到我的容器中.我有Dockerfile: FROM tomcat:7.0MAINTAINER [email protected] apt-get updateRUN DEBIAN_FRONTEND=noninteract 我有一个Docker容器,可以在我的本地开发机器上运行.我想将其移至AWS Elastic Beanstalk,但我遇到了一些麻烦.

我正在尝试使用s3fs将S3存储桶安装到我的容器中.我有Dockerfile:

FROM tomcat:7.0MAINTAINER [email protected] apt-get updateRUN DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential libfuse-dev libcurl4-openssl-dev libxmL++2.6-dev libssl-dev mime-support automake libtool wget tar # Add the java sourceADD . /path/to/tomcat/webapps/ADD run_docker.sh /root/run_docker.shworkdir $CATAliNA_HOMEEXPOSE 8080CMD ["/root/run_docker.sh"]

我通过运行run_docker.sh来安装s3fs,安装S3存储桶,并在创建映像后运行Tomcat服务器:

#!/bin/bash#run_docker.shwget https://github.com/s3fs-fuse/s3fs-fuse/archive/master.zip -O /usr/src/master.zip;cd /usr/src/;unzip /usr/src/master.zip;cd /usr/src/s3fs-fuse-master;autoreconf --install;CPPFLAGS=-I/usr/include/libxml2/ /usr/src/s3fs-fuse-master/configure;make;make install;cd $CATAliNA_HOME;mkdir /opt/s3-files;s3fs my-bucket /opt/s3-files;catalina.sh run

当我使用以下命令构建并运行此Docker容器时:

docker run --cap-add mknod --cap-add sys_admin --device=/dev/fuse -p 80:8080 -d username/mycontainer:latest

它运作良好.然而,当我删除–cap-add mknod –cap-add sys_admin –device = / dev / fuse时,s3fs无法挂载我的S3存储桶.

现在,我想在AWS Elastic Beanstalk上运行它,当我部署容器(并运行run_docker.sh)时,所有步骤都可以正常执行,除了run_docker.sh中的步骤s3fs my-bucket / opt / s3-files无法安装存储桶.

据推测,这是因为无论Elastic Beanstalk运行Docker容器,它都不会添加任何额外的标志,例如–cap-add mknod –cap-add sys_admin –device = / dev / fuse.

我的Dockerrun.aws.Json文件如下所示:

{  "AWSEBDockerrunVersion": "1","Image": {    "name": "tomcat:7.0"  },"Ports": [    {      "ContainerPort": "8080"    }  ]}

是否可以向AWS EB Docker部署添加额外的docker run标志?
另一种选择是找到另一种方法来安装S3存储桶,但我怀疑我会遇到类似的权限错误.有谁见过任何方法来完成这个???

更新:

对于尝试使用@ Egor的答案的人来说,当EB配置设置为使用运行Docker 1.6.0的v1.4.0时,它会起作用.任何超过v1.4.0版本的内容都会失败.因此,为了使其工作,正常构建您的环境(这应该会给您一个失败的构建),然后使用运行Docker 1.6.0配置的v1.4.0重建它.应该这样做!

解决方法 如果您使用的是最新版本的aws docker stack(例如docker 1.7.1),则需要稍微修改上述答案.试试这个:
commands:    00001_add_privileged:        cwd: /tmp        command: 'sed -i "s/docker run -d/docker run --privileged -d/" /opt/elasticbeanstalk/hooks/appdeploy/enact/00run.sh'

注意位置的变化&&运行脚本的名称

总结

以上是内存溢出为你收集整理的linux – 如何使用非默认运行参数在AWS Elastic Beanstalk中运行Docker容器?全部内容,希望文章能够帮你解决linux – 如何使用非默认运行参数在AWS Elastic Beanstalk中运行Docker容器?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1048775.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存