我天真地期望这个命令能在运行的容器中运行bash shell:
docker run "id of running container" /bin/bash
看起来这是不可能的,我得到了错误:
2013/07/27 20:00:24 Internal server error: 404 trying to fetch remote history for 27d757283842
因此,如果我想在运行的容器中运行bash shell (例如,用于诊断目的)
我是否必须在其中运行SSH服务器并通过ssh登录?
发布于 2013-07-30 02:54:06
编辑:现在可以使用docker exec -it "id of running container" bash
(doc)
以前,这个问题的答案是:
如果您确实必须这样做,并且您处于调试环境中,则可以这样做:sudo lxc-attach -n <ID>
请注意,id必须是完整的id (docker ps -notrunc
)。
然而,我强烈建议不要这样做。
注意:-notrunc
已被弃用,将很快被--no-trunc
取代。
发布于 2014-10-22 05:42:19
在docker 1.3中,有一个新的命令docker exec
。这允许您进入正在运行的docker:
docker exec -it "id of running container" bash
发布于 2014-08-20 15:23:37
由于事情正在发生变化,目前推荐的访问运行容器的方式是使用nsenter
。
您可以在此github repository上找到更多信息。但一般来说,您可以像这样使用nsenter:
PID=$(docker inspect --format {{.State.Pid}} <container_name_or_ID>)
nsenter --target $PID --mount --uts --ipc --net --pid
或者,您可以使用包装器docker-enter
docker-enter <container_name_or_ID>
关于这个话题的一个很好的解释可以在杰罗姆·佩塔佐尼的博客上找到:Why you don't need to run sshd in your docker containers
https://stackoverflow.com/questions/17903705
复制相似问题