HOWTO · Docker
如何在新的 Docker 容器中啟動 Bash 終端
本教程演示如何在新的 Docker 容器中啟動 bash 終端。
本頁內容
若要在 Docker 容器中開啟 Bash,請依容器的狀態選擇命令。使用 docker run -it IMAGE bash 啟動帶有互動式 Bash 工作階段的新容器。使用 docker exec -it CONTAINER bash 在已在執行的容器中啟動獨立的 Bash 工作階段。僅當您想將終端連接到容器的主程序時才使用 docker attach CONTAINER;它不會啟動另一個 shell。
將 IMAGE 替換為 Docker 可用且包含 Bash 的映像。將 CONTAINER 替換為執行中容器的名稱或 ID。以下命令是語法範本:其佔位符必須替換,且它們並非以已執行輸出的形式呈現。
使用 Bash 互動式 Shell
當您想要新容器以及其中互動式 Bash 提示符時,請使用 docker run -it IMAGE bash。-i 選項讓標準輸入保持開啟,-t 分配一個終端,使工作階段的行為如同互動式命令列。bash 是 Docker 在新容器內啟動的命令。
例如,將 docker run -it IMAGE bash 中的 IMAGE 替換為映像名稱。映像必須包含 Bash;最小映像可能僅提供 sh 或其他 shell。此命令會建立並啟動容器,因此與在已存在的容器中開啟 shell 不同。如果您想重複使用已停止的容器,請先啟動它,待其執行後再使用 docker exec。
使用 docker exec 命令
使用 docker exec -it CONTAINER bash 以新程序的形式在已在執行的容器中啟動 Bash。docker exec 不會啟動已停止的容器。若要尋找執行中容器的名稱與 ID,請使用 docker ps;當您還需要查看已停止的容器時,請使用 docker ps -a。使用 docker start CONTAINER 啟動目標已停止容器,然後執行 docker exec 命令。
如果映像中未安裝 Bash,當映像提供 sh 時,請嘗試 docker exec -it CONTAINER sh。Shell 命令必須存在於容器中。兩種 docker exec 形式都會建立獨立的互動式程序,因此在容器的主程序繼續執行時,它們適用於檢查或疑難排解。
使用 docker attach 命令
使用 docker attach CONTAINER 將終端的輸入與輸出流連接到執行中容器的主程序。當該程序已提供您所需的互動式工作階段時,這很有用。例如,如果容器是以 shell 作為主程序啟動的,attach 會重新連接到該程序。
Attach 不會啟動 Bash 或任何其他新命令。如果容器的主程序是應用程式,attach 會連接到該應用程式的資料流;它不會給您獨立的 shell 提示符。當您需要在主程序之外啟動 shell 時,請選擇 docker exec -it CONTAINER bash(或可用的 sh)。簡而言之:docker run 啟動新容器,docker exec 在執行中的容器中啟動命令,docker attach 連接到既有的主程序。