我如何设置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"