加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

linux – 无法附加到运行Docker容器的bash

发布时间:2020-12-31 03:04:48 所属栏目:Linux 来源:网络整理
导读:连接到bash实例时遇到麻烦,使容器保持运行. 更详细一点.我在这里运行容器: $docker run -dt --name test ubuntu bash 现在它应该实际运行,而不是完成. $docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESf3596c613cfe ubuntu "bash" 4 sec

连接到bash实例时遇到麻烦,使容器保持运行.

更详细一点.我在这里运行容器:

$docker run -dt --name test ubuntu bash

现在它应该实际运行,而不是完成.

$docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             
STATUS              PORTS               NAMES
f3596c613cfe        ubuntu              "bash"              4 seconds ago       Up 2 seconds                            test

在此之后,我试图附加到保持容器运行的bash实例.像这样:

$docker attach test

运行此命令我可以写一些东西到stdin,但没有结果跟随.我不确定bash是否正在输入我输入的行.

还有其他一些方法来阻止容器运行吗?

我知道,我可以运行不同的bash实例并使用它docker exec -it test bash.但是更一般的是,有没有办法连接到在Docker容器中运行的进程?

有时,保存在容器内运行的进程的会话会很有用.

感谢user2915097指出丢失的-i标志.

所以现在我们可以进行持久的bash会话.例如,让我们设置一些别名并在停止并重新启动容器后重用.

$docker run -itd --name test ubuntu bash

要附加到bash实例,只需运行即可

$docker attach test
root@3534cbe1e994:/# alias test="Hello,world!"

要从容器中分离而不是停止容器,请按Ctrl p,Ctrl q

然后我们可以停止并重启容器

$docker stop test
$docker start test

现在我们可以附加到同一个bash实例并检查我们的别名

$docker attach test
root@3534cbe1e994:/# test
Hello,world!

一切都很完美!

正如我在我的评论中指出的那样,用例可以运行一些交互式shell作为bash,octave,ipython在Docker容器中保存所有历史记录,导入,变量和临时设置
通过重新连接到同一个实例.

解决方法

正如您所见,您的容器正在运行,尚未完成

>它出现在docker ps中,因此它是一个正在运行的容器
>它显示n秒

你用-dt启动它就可以了

分离(d)
分配一个tty(for t)

但不是交互式的,因为你不添加-i

通常,你几乎总是提供 – 在一起,它可能是-idt

看到这个帖子

When would I use `–interactive` without `–tty` in a Docker container?

如你想要bash,我认为你应该添加-i

我不知道你为什么使用-d

通常是

docker run -it –rm –name = mytest ubuntu bash

你可以测试一下

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读