如何進入 Docker 容器的 Shell?
一旦你的 Docker 容器啟動並執行,你可以像操作 Ubuntu 機器一樣操作 Docker 容器的環境。你可以訪問容器的 bash 或 shell,在其中執行命令並操作檔案系統。你可以在容器本身內部構建、測試和部署你的應用程式。
主要有三種方法可以訪問正在執行的容器的 shell:-
- 使用 Docker run 命令執行容器並訪問其 shell。
- 使用 Docker exec 命令在活動容器中執行命令。
- 使用 Docker start 命令並將 shell 附加到已停止的容器。
在本文中,我們將逐一討論所有這些方法並提供實際示例。讓我們看看如何做到這一點。
Docker Run 命令
如果你沒有執行的容器,可以使用 Docker run 命令建立並執行一個與映象關聯的容器,並訪問容器的 bash。讓我們嘗試執行一個 ubuntu 容器並訪問其 bash。
$ docker run -it --name=myubuntu ubuntu:latest bash
在上面的命令中,我們使用了 -i(互動式)和 -t(偽終端)選項,這將允許我們使用終端驅動程式與容器進行互動。bash 命令在容器啟動後立即執行。因此,執行此命令後,守護程序將自動建立容器、執行它併為我們提供對其 shell 的訪問許可權。
請注意,如果你的系統上沒有 Ubuntu 映象,守護程序將自動拉取映象並建立和執行容器。
一旦你能夠訪問容器的 bash,你就可以開始與 Ubuntu 環境進行互動並操作其檔案系統。
Docker Exec 命令
Docker exec 命令用於在已執行的容器內執行命令。只有在容器的主程序正在執行時才能使用此命令。在容器內執行的任何命令都將在預設工作目錄中執行,除非你使用 -w 選項指定所需目錄。此外,你將無法執行任何帶引號或連結的命令。只能執行可執行的命令。
Docker exec 命令的語法為:-
$ docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
可以使用此命令啟動一個已在其他地方執行的容器的新 bash 會話。
$ docker exec -it myubuntu bash
此命令使用互動式和偽終端選項啟動已在執行的 ubuntu 容器的 bash。
Docker Start 命令
如果你有一個處於退出狀態的容器,並且想要啟動與該容器關聯的 bash,則可以使用 Docker start 命令以及 --attach 和 --interactive 選項。這將附加一個新的終端,並允許你輕鬆地與容器進行互動。讓我們看看如何做到這一點。
Docker start 命令的原始語法為:-
$ docker start [OPTIONS] CONTAINER [CONTAINER...]
如果要檢查容器的狀態,可以嘗試列出所有容器。
$ docker container ps -a
可以使用以下命令建立已停止容器的 bash 會話:-
$ docker start -ai myubuntu
總而言之,在本文中,我們討論瞭如何進入正在執行、已停止或透過建立新容器進入 Docker 容器的 shell。我們使用了 Docker run、exec 和 start 命令來實現這一點。根據你自己的使用場景,可以使用上述任何方法來達到你的目標。