如何使用内部bash shell为docker exec设置当前工作目录?

Mat*_*att 11 bash docker

我有一个基于ubuntu的开发者docker镜像:14.04,我用它为Ubuntu 14.04开发应用程序.我在机器启动时启动此图像docker start image-name

我的主目录在最初创建时使用--volumes绑定装入.

要输入图像,我在其中定义了别名 .bash_aliases

alias d_enter="docker exec -ti ub1404-dev /bin/bash"
Run Code Online (Sandbox Code Playgroud)

所以要输入我刚输入的图像 d_enter

但我经常忘记在输入长路径后运行d_enter,并希望d_enter自动切换到该内部目录.

以下不起作用.

docker exec -ti ub1404-dev /bin/bash <(echo ". ~/.bashrc && cd $(pwd)")
Run Code Online (Sandbox Code Playgroud)

还有另一种方法可以达到预期的效果吗?

例如,如果我当前的工作目录是: /home/matt/dev/somepath/blabla

然后我输入d_enter,我当前的工作目录变成了:/home/matt在exec之后我想要为当前目录做什么/home/matt/dev/somepath/blabla

小智 12

您可以通过以下方式实现:
docker exec -it containerName sh -c "cd /var/www && /bin/bash"


cwe*_*ske 7

构建图像时,可以在以下位置指定WORKDIR 变量Dockerfile

WORKDIR /var/www/html
Run Code Online (Sandbox Code Playgroud)


Luc*_*tto 5

从API 1.35+起,您可以使用-w--workdir)选项:

docker exec -w /my/dir container_name command
Run Code Online (Sandbox Code Playgroud)

https://docs.docker.com/engine/reference/commandline/exec/