docker run 之後都在執行中 如何跳出回到原本主機?

 


當你使用 docker run -it 啟動容器時,它會進入互動模式,讓你可以直接操作容器內的命令行。如果你想跳出容器,回到原本的主機,可以使用以下方法:


方法 1:使用 Ctrl + P + Q(推薦)

這是 最乾淨的方式,它會讓容器繼續執行,但你會回到主機:

  1. 按下 Ctrl + P
  2. 接著按 Ctrl + Q
  3. 你會回到原本的主機,而容器仍然在後台運行

你可以用 docker ps 確認容器還在執行。


方法 2:使用 Ctrl + D(會終止容器)

如果你在容器的 Shell(如 bash)中,按下:

Ctrl + D

這相當於執行 exit,會直接停止並退出容器(如果你用了 --rm,容器會被刪除)。


方法 3:使用 exit(會終止容器)

在容器的終端輸入:

exit

這會讓容器停止執行,並退出回到主機。


方法 4:開新終端並手動分離

如果你已經進入容器,但沒有 Ctrl + P + Q,你可以:

  1. 開一個新的終端
  2. 執行以下命令,將容器移到背景
docker detach vista3d
這樣你就可以回到主機,而容器仍然在執行。

結論

方法是否保持容器執行適用情境
Ctrl + P + Q ✅ 是 推薦,讓容器繼續執行
Ctrl + D ❌ 否 會終止容器
exit ❌ 否 會終止容器
docker detach ✅ 是 需新開終端,手動執行

如果你只是想回到主機但讓容器繼續跑,請使用 Ctrl + P + Q



重新回到容器內?

 

 


 

如果你已經跳出容器,想要重新回到容器內,可以使用以下方法:


方法 1:使用 docker exec -it(推薦,適用於執行中的容器)

這個方法適用於容器仍在運行時,讓你重新開啟一個交互式終端

docker exec -it vista3d /bin/bash
或(某些容器可能使用 sh 而不是 bash):

docker exec -it vista3d /bin/sh

適用情境

  • 你已經用 Ctrl + P + Q 離開,但容器仍在運行。
  • 你想開啟多個終端連接到同一個容器。

方法 2:使用 docker attach(恢復原本的終端)

如果你之前用 Ctrl + P + Q 離開,而不是 exit,你可以用:

docker attach vista3d

這會把你帶回原本的會話,就像你從未離開過一樣。
但請注意,如果你按 Ctrl + D 或輸入 exit,容器可能會關閉。

適用情境

  • 你想要回到原本的容器終端,而不是開新的 Shell。

方法 3:使用 docker start -ai(適用於已停止的容器)

如果你的容器已經停止,你需要先啟動它,然後附加:

docker start -ai vista3d

這會讓你重新回到原本的終端。

適用情境

  • 你用 exit 退出導致容器停止,但想重新進入。

方法 4:使用 docker run -it 重新啟動新容器

如果你的容器是用 --rm 啟動的,則當容器結束後它會被刪除,你無法重新進入。你需要重新啟動:

docker run --rm -it --name vista3d \
   --runtime=nvidia -e '"device=7"' \
   --shm-size=8G \
   -p 8100:8000 \
   -e DOMAIN_WHITELIST='["www.zoearthmoon.net"]' \
   -e NGC_API_KEY=$NGC_API_KEY \
   -e IGNORE_SSL_ERRORS=True \
   -e IMAGE_URI_HTTPS_ONLY=False \
   nvcr.io/nim/nvidia/vista3d:1.0.0

適用情境

  • 你用 --rm 啟動容器,導致容器已刪除,無法重新進入,只能重新運行。

結論

方法適用情境
docker exec -it vista3d /bin/bash 最佳選擇,開啟新 Shell,不影響容器
docker attach vista3d 回到原本的終端,適合用 Ctrl + P + Q 離開的情況
docker start -ai vista3d 容器已停止,需要重啟並回到終端
docker run -it ... 容器已刪除(--rm 啟動的情況下)

如果你的容器還在運行,最推薦的方法是 docker exec -it vista3d /bin/bash