如何在后台模式下将bash或ssh放入正在运行的容器中?

Modified on: Sat, 09 Jun 2018 10:44:00 +0800

我想ssh或bash到正在运行的docker容器中。请看示例:

$ sudo docker run -d webserver
webserver is clean image from ubuntu:14.04
$ sudo docker ps
CONTAINER ID  IMAGE            COMMAND    CREATED STATUS  PORTS          NAMES
665b4a1e17b6  webserver:latest /bin/bash  ...     ...     22/tcp, 80/tcp loving_heisenberg 

现在我想得到这样的东西(进入正在运行的容器):

$ sudo docker run -t -i webserver (or maybe 665b4a1e17b6 instead)
$ root@665b4a1e17b6:/# 
However when I run the line above I get new CONTAINER ID
$ root@42f1e37bd0e5:/#

我使用了Vagrant,我希望获得与vagrant ssh类似的行为。

最佳答案

答案是docker的attach命令。因此,对于上面的示例,解决方案将:

$ sudo docker attach 665b4a1e17b6 #by ID
or
$ sudo docker attach loving_heisenberg #by Name
$ root@665b4a1e17b6:/# 

更新(docker> = 1.3)感谢WiR3D用户提出了另一种获取容器shell的方法。如果我们使用attach,我们只能使用一个shell实例。因此,如果我们想要使用容器shell的新实例打开新终端,我们只需运行以下命令:

$ sudo docker exec -i -t 665b4a1e17b6 /bin/bash #by ID
or
$ sudo docker exec -i -t loving_heisenberg /bin/bash #by Name
$ root@665b4a1e17b6:/#

相关问答

添加新评论