连接到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
你可以测试一下
原文地址:https://www.jb51.cc/docker/435774.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。