如何登录正在运行的 docker 实例?

如何登录正在运行的 docker 实例?

戳一下docker看看它是如何工作的:

ubuntu@ip-172-31-14-19:~$ 
ubuntu@ip-172-31-14-19:~$ sudo docker run --net=host -d -t jmar71n/freepbx
2792243260a8de33d1a775d115188e601fc556e500b5ad085e09b4133d0f3d06
ubuntu@ip-172-31-14-19:~$ 
ubuntu@ip-172-31-14-19:~$ sudo docker run -it jmar71n/freepbx bash
root@46f45b8973c3:/# 
root@46f45b8973c3:/# exit
exit
ubuntu@ip-172-31-14-19:~$ 
ubuntu@ip-172-31-14-19:~$ sudo docker run -it jmar71n/freepbx bash
root@813557bf8922:/# 
root@813557bf8922:/# echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
root@813557bf8922:/# 

现在,每个都是run一个新实例吗?这就是提示发生变化的原因吗?每个?都有hostname一个唯一的 ID 。run

我如何使用登录到第一个实例--net=host

当我尝试执行标志, 它失败:

ubuntu@ip-172-31-14-19:~$ 
ubuntu@ip-172-31-14-19:~$ sudo docker exec -it jmar71n/freepbx bash
Error: No such container: jmar71n/freepbx
ubuntu@ip-172-31-14-19:~$ 

为什么?登录该实例的正确方法是什么?

ubuntu@ip-172-31-14-19:~$ 
ubuntu@ip-172-31-14-19:~$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              20c44cd7596f        2 days ago          123MB
hello-world         latest              725dcfab7d63        2 weeks ago         1.84kB
jmar71n/freepbx     latest              8dda2a58fde1        19 months ago       1.54GB
ubuntu@ip-172-31-14-19:~$ 

答案1

当您执行run命令时,每次都会创建新容器。

run使用选项执行-it,以便在 docker 容器内进行连接,这就是提示符发生变化的原因。因此,您使用新提示符执行的所有命令都将在容器内执行。

当您说exit终止活动进程(bash,因为您在创建过程中将其作为参数传递)时,您的容器就会停止,因为它仅在 PID 为 1 的主进程存在时才存在。

为了连接到实例,首先以-d分离模式运行它,然后您可以运行docker attach.文档您可以通过 获取容器的 ID docker ps -a。与 相同docker exec -it <containerID> bash

答案2

Docker 运行,创建一个新实例(帕拉来自给定映像的虚拟化)环境。

要登录到给定实例,您需要运行 docker exec,但需要使用要登录的容器的 ID 来执行 docker exec。这可以通过以下命令获得:

docker ps -a

然后获得 id 后,使用以下命令登录容器:

docker exec -it <containerid> bash

相关内容