docker和elastic beanstalk容器意外停止,权限被拒绝

我试图扩展这个Docker镜像 ,这个镜像至less在Docker Hub上是成功的,并且这个镜像的一部分包含一个叫做play的用户,它拥有一个名为/ home / play / Code的目录,拥有755个权限。 我在mac上使用boot2docker

这是我的泊坞窗文件在本地

FROM ir1sh/dockeractivator MAINTAINER Mark Moore EXPOSE 9000 

build立好,当我跑

 docker run --rm -it -v "/my/local/dir:/home/play/Code" -p 9000:9000 300b01a6199c 

容器启动正确,我得到一个开始于/ home / play / Code的用户root的会话。 如果我添加了-u玩commade,我得到一个与玩家的会话,而不是在同一个目录。

现在,如果我用它们的cli工具将该容器推送到弹性beanstalk,我得到以下错误

输出:[CMD-AppDeploy / AppDeployStage0 / AppDeployPreHook / 04run.sh]命令失败,错误代码为1:/opt/elasticbeanstalk/hooks/appdeploy/pre/04run.sh b07ae15d619ad90441f6f410a31a7d51885151c92cd8675c5d8e47f63b43dd95启动后Docker容器意外退出:Docker容器在Sun上意外退出12月21日13:36:06 UTC 2014: 检查快照日志的详细信息..

日志不是很有启发性

现在根据另一个build议,我没有在我的docker文件中的CMD或ENTRYPOINT,所以我添加这些。

 FROM ir1sh/dockeractivator MAINTAINER Mark Moore EXPOSE 9000 ENTRYPOINT ["/home/play/Code", "-DFOREGROUND"] CMD [] 

图像生成,但现在当我尝试docker运行与上述相同的选项我得到

exec:“/ home / play / Code”:permission denied2014 / 12/21 13:34:33守护进程错误响应:无法启动容器2703462a68a32e8d774e9b4d8cbc3c809e79f53bb1d08f0398b45436d07546a3:exec:“/ home / play / Code”:权限被拒绝

无论我尝试以root用户身份还是以play身份启动会话都会发生这种情况。 我得到同样的错误,如果我推这个dockerfile到弹性beanstalk,所以它不涉及到boot2docker任何想法是什么我的权限问题在这里? 我试图改变目录权限777无济于事

编辑1:作为特权运行也没有帮助

编辑2:更改dockerfile

 FROM ir1sh/dockeractivator MAINTAINER Mark Moore EXPOSE 9000 CMD ["bash"] 

允许我在本地运行容器,但在popupbeanstalk后,我得到容器再次意外地退出错误

尝试运行时没有 – 当你在本地运行时,这适当地复制了在弹性beanstalk上运行的场景,因为beanstalk将不会以交互模式运行容器。 某些进程不能很好地处理非交互式shell。 当你使用bash作为你的CMD时,情况确实如此。 在非交互模式下,bash shell将立即退出。

我也认为你还不清楚什么是入口点和CMD,我看到/home/play/Code是一个目录,总是需要一个可执行文件中的第一个string。

例如,如果您有入口点[“A”,“B”]和CMD [“C”,“D”],则相当于在terminalABCD上发出以下命令。 一个更好的例子是:

 ENTRYPOINT ["ls","-a","-l"] CMD ["/var/log"] # This maps too ls -a -l /var/log 

有两个选项ENTRYPOINT的原因不能在运行时被CMD覆盖。 即我可以docker运行以下更改目录,LS的命令将列出,但我不能改变这个容器将运行一个LS命令的事实

 docker run -it myContainer /tmp