我天真地期望这个命令在一个正在运行的容器中运行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登录吗?
由于情况正在发生变化,目前访问正在运行的容器的推荐方式是使用nsenter。
你可以在这个github存储库上找到更多信息。但通常你可以这样使用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>
关于这个话题的一个很好的解释可以在Jérôme Petazzoni的博客上找到:
为什么不需要在docker容器中运行sshd