首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否可以在运行的容器中启动shell会话(没有ssh)?

是否可以在运行的容器中启动shell会话(没有ssh)?
EN

Stack Overflow用户
提问于 2013-07-28 08:05:06
回答 11查看 247.1K关注 0票数 347

我天真地期望这个命令能在运行的容器中运行bash shell:

代码语言:javascript
复制
docker run "id of running container" /bin/bash

看起来这是不可能的,我得到了错误:

代码语言:javascript
复制
2013/07/27 20:00:24 Internal server error: 404 trying to fetch remote history for 27d757283842

因此,如果我想在运行的容器中运行bash shell (例如,用于诊断目的)

我是否必须在其中运行SSH服务器并通过ssh登录?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 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取代。

票数 291
EN

Stack Overflow用户

发布于 2014-10-22 05:42:19

在docker 1.3中,有一个新的命令docker exec。这允许您进入正在运行的docker:

代码语言:javascript
复制
docker exec -it "id of running container" bash
票数 617
EN

Stack Overflow用户

发布于 2014-08-20 15:23:37

由于事情正在发生变化,目前推荐的访问运行容器的方式是使用nsenter

您可以在此github repository上找到更多信息。但一般来说,您可以像这样使用nsenter:

代码语言:javascript
复制
PID=$(docker inspect --format {{.State.Pid}} <container_name_or_ID>)
nsenter --target $PID --mount --uts --ipc --net --pid

或者,您可以使用包装器docker-enter

代码语言:javascript
复制
docker-enter <container_name_or_ID>

关于这个话题的一个很好的解释可以在杰罗姆·佩塔佐尼的博客上找到:Why you don't need to run sshd in your docker containers

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17903705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档