我如何设置docker exec的当前工作目录与内部bash shell?

我有一个基于Ubuntu 14.04的开发者docker镜像,我使用它来开发Ubuntu 14.04的应用程序。 当机器以docker start image-name时,我启动这个映像

我的主目录是在最初创build时用–volumes绑定的。

要input图像,我有一个在.bash_aliases定义的别名

 alias d_enter="docker exec -ti ub1404-dev /bin/bash" 

所以要input图像我只需inputd_enter

但是我经常忘记在input一个长path后运行d_enter,并且希望d_enter自动切换到内部目录。

以下不起作用。

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

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

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

而我inputd_enter,我目前的工作目录变成: /home/matt在exec之后,我想为当前目录做/home/matt/dev/somepath/blabla

绝对是一个黑客,但你可以做一些像做一个shell函数(可以留一个别名,但这是更容易维护):

 d_enter() { pwd > ~/.docker_initial_pwd docker exec -ti ub1404-dev /bin/bash } 

然后在用户帐户的.bashrc容器中添加如下内容:

 if [[ -f "${HOME}/.docker_initial_pwd ]]; then cd $(cat "${HOME}/.docker_initial_pwd") fi 

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