如何进入一个Ubuntu Docker容器的Bash?

4

我想运行一个 ubuntu 容器并进入 bash

[root@localhost backup]# docker run ubuntu bash
[root@localhost backup]#

ubuntu容器直接退出了,我怎样进入bash

1个回答

11

使用-i-t选项。

示例:

$ docker run -i -t ubuntu /bin/bash
root@9055316d5ae4:/# echo "Hello Ubuntu"
Hello Ubuntu
root@9055316d5ae4:/# exit

参见:Docker run 参考文档

$ docker run --help | egrep "(-i,|-t,)"

-i, --interactive=false 即使没有附加,也保持 STDIN 打开

-t, --tty=false 分配一个伪终端

更新:这个命令之所以有效并保持容器运行(运行 /bin/bash),是因为 -i-t 选项(特别是 -i)保持 STDIN 打开,因此 /bin/bash 不会立即终止从而终止容器。-- 您需要/想要使用 -t 的原因是您可能想要一个类似终端的交互式会话,因此 t 为您创建了一个新的伪终端。-- 此外,如果您在不使用 -i/-t 选项的情况下查看 docker ps -a 的输出,则会看到您的容器正常终止,并显示 退出代码0


如果没有使用“-i -t”,为什么ubuntu容器会退出?您能详细解释一下添加“-i -t”选项和不添加选项之间的区别吗? - Nan Xiao
谢谢您的解释!但我还是有点困惑:-i,--interactive = false即使没有连接,也保持STDIN打开,attached是什么意思?您能给出解释吗? - Nan Xiao
“attached” 意味着附加到 tty 或管道。如果只使用“-i”,则是这种情况。 - James Mills
@JamesMills “即使未连接,也要保持 STDIN 打开”,那么,在 docker run 中如何附加到容器?如果我想使用 STDIN,似乎必须使用 -i - YON

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接