我有一个基于ubuntu的开发者docker镜像:14.04,我用它为Ubuntu 14.04开发应用程序。当机器使用docker start image-name
我的主目录在最初创建时使用--volumes绑定挂载。
要输入图像,我在.bash_aliases
alias d_enter="docker exec -ti ub1404-dev /bin/bash"
因此,要输入图像,我只需输入d_enter
但我经常忘记在输入长路径后运行d_enter,并希望d_enter自动切换到该内部目录。
以下内容无效。
docker exec -ti ub1404-dev /bin/bash <(echo ". ~/.bashrc && cd $(pwd)")
还有另一种方法可以达到预期效果吗?
例如,如果我当前的工作目录是:/home/matt/dev/somepath/blabla
我键入d_enter,我当前的工作目录当前变为:/home/matt
exec为/home/matt/dev/somepath/blabla
后我想要为当前目录做什么
答案 0 :(得分:3)
您可以通过以下方式实现:
docker exec -it containerName sh -c "cd /var/www && /bin/bash"
答案 1 :(得分:1)
绝对是一个黑客,但你可以做一些像d_enter
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
答案 2 :(得分:1)
从API 1.35+开始,您可以使用-w
(--workdir
)选项:
docker exec -w /my/dir container_name command
答案 3 :(得分:1)
构建图像时,可以在Dockerfile
中指定WORKDIR variable:
WORKDIR /var/www/html