docker run 之後都在執行中 如何跳出回到原本主機?
當你使用 docker run -it
啟動容器時,它會進入互動模式,讓你可以直接操作容器內的命令行。如果你想跳出容器,回到原本的主機,可以使用以下方法:
方法 1:使用 Ctrl + P + Q
(推薦)
這是 最乾淨的方式,它會讓容器繼續執行,但你會回到主機:
- 按下
Ctrl + P
- 接著按
Ctrl + Q
- 你會回到原本的主機,而容器仍然在後台運行。
你可以用 docker ps
確認容器還在執行。
方法 2:使用 Ctrl + D
(會終止容器)
如果你在容器的 Shell(如 bash
)中,按下:
Ctrl + D
這相當於執行 exit
,會直接停止並退出容器(如果你用了 --rm
,容器會被刪除)。
方法 3:使用 exit
(會終止容器)
在容器的終端輸入:
exit
這會讓容器停止執行,並退出回到主機。
方法 4:開新終端並手動分離
如果你已經進入容器,但沒有 Ctrl + P + Q
,你可以:
- 開一個新的終端
- 執行以下命令,將容器移到背景
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
!
留言板
歡迎留下建議與分享!希望一起交流!感恩!