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
?當我嘗試exec flag時,它失敗了:
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:~$
Docker 執行,從給定的圖像創建一個新的實例(準虛擬化)環境。
要登錄給定實例,您需要執行 docker exec 但您需要使用您要登錄的容器的 id 執行 docker exec。這可以通過以下命令實現:
docker ps -a
然後在獲得 id 後,使用以下命令登錄容器:
docker exec -it <containerid> bash
執行
run
命令時,每次都會創建新容器。
run
您使用選項執行,-it
因此您在 docker 容器內被連接,這就是您的提示正在改變的原因。因此,您使用新提示執行的所有命令都將在容器內執行。當你說
exit
你終止了你的活動程序(bash,因為你在創建過程中將它作為參數傳遞)並且你的容器停止了,因為它只存在於 PID 1 的主程序存在的時候。為了連接到實例,首先,
-d
以分離模式執行它,然後您可以執行docker attach
. docs您可以通過docker ps -a
. 與 相同docker exec -it <containerID> bash
。