戳一下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