为什么我不能用docker run cd到目录?

我需要从一个特定的目录运行一个应用程序。

$ sudo docker run -P ubuntu/decomposer 'cd /local/deploy/decomposer; ./decomposer-4-15-2014' 2014/10/09 21:30:03 exec: "cd /local/deploy/decomposer; ./decomposer-4-15-2014": stat cd /local/deploy/decomposer; ./decomposer-4-15-2014: no such file or directory 

该目录完全存在,如果我通过交互式运行bash连接到docker,则可以运行上述命令。

 $ sudo docker run -i -t ubuntu/decomposer /bin/bash # cd /local/deploy/decomposer; ./decomposer-4-15-2014 

我可以通过指定完整的path来运行我的程序,但是它会崩溃,因为它期望从当前目录启动。 我能做什么?

将您的命令作为parameter passing给/ bin / sh,如下所示:

 sudo docker run -P ubuntu/decomposer /bin/sh -c 'cd /local/deploy/decomposer; ./decomposer-4-15-2014' 

你可以使用-w选项来改变你的工作目录。

 docker run -w, --workdir="" Working directory inside the container 

所以,就你而言,你会运行:

 sudo docker run -w /local/deploy/decomposer -P ubuntu/decomposer ./decomposer-4-15-2014 

在Dockerfile中使用WORKDIR来设置工作目录。 然后你可以用EXEC运行你的命令。

这可能是由于权限问题,或者实例无法find可执行的可用path。 要检查此尝试在path中添加可执行的可用位置,并尝试运行脚本

在path中添加当前目录请使用下面的命令

 $ export PATH=$PATH: