5.1 docker exec
指令基礎
docker exec
指令 是一種用來與正在運行的容器互動的工具。它允許在容器內執行命令和開啟互動式會話。這對於管理任務、除錯和監控非常有用。在這堂課裡,我們會詳細解釋如何使用 docker exec
指令,哪些參數是可用的,並提供一些實際應用的例子。
docker exec
指令 用於在已啟動的容器中執行命令。借助這個工具,可以進入容器並與其互動,就像直接操作伺服器一樣。
語法
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
參數說明:
-
CONTAINER
: 你想進入的容器名稱或 ID。 -
COMMAND
: 你想在容器內執行的命令。 ARG...
: 命令的參數。
基本使用範例
此範例將在容器 my_container
中執行命令 ls /app
,這會顯示容器內目錄 /app
的內容。
docker exec my_container ls /app
5.2 docker exec 指令參數
docker exec 指令支援多種選項,可以調整在容器內執行指令的行為。
1. 開啟互動式會話
要開始互動式會話,使用選項組合 -i
(interactive)和 -t
(pseudo-TTY)。
docker exec -it my_container /bin/bash
在這個範例中,會在容器 my_container
內開啟互動式終端 Bash
。這讓你能即時執行指令。
2. 無需等待完成的方式執行指令
如果你需要在容器內執行指令且不等待其完成,可以使用選項 -d
(detached mode)。
docker exec -d my_container touch /app/newfile.txt
在這個範例中,指令會在容器的目錄 /app
中建立空白檔案 newfile.txt
。執行後控制台會立刻回到指令,不等待完成。
3. 指定自訂環境變數
你可以使用 -e
傳遞環境變數進入容器。
docker exec -e MY_VAR=value my_container env
這個範例會將環境變數 MY_VAR
傳入容器,並執行指令 env
來顯示容器內的所有環境變數。
5.3 使用範例
範例 1: 查看容器內執行的進程
這個範例將在容器 my_container
裡執行指令 ps aux
,並顯示所有正在執行的進程列表。
docker exec my_container ps aux
範例 2: 檢查容器內服務狀態
這個範例將在容器 my_container
裡執行指令 service nginx status
,並顯示服務 nginx
的狀態。
docker exec my_container service nginx status
範例 3: 在容器內安裝套件
這個範例將更新套件列表並在容器 my_container
裡安裝編輯器 vim
。
docker exec my_container apt-get update && apt-get install -y vim
5.4 實際場景
1. 容器管理
docker exec 指令允許管理員在容器內執行維護任務:編輯配置檔案、檢查日誌或更改檔案訪問權限。
docker exec -it my_container vim /etc/nginx/nginx.conf
2. 應用程式調試
在開發和測試應用程式期間,docker exec 指令幫助開發人員檢查應用程式狀態、執行調試和分析錯誤。
docker exec -it my_container python /app/scripts/debug.py
3. 監控和診斷
使用 docker exec 可以執行診斷命令並監控容器狀態:檢查資源使用、網路連接和其他指標。
docker exec my_container top
這個指令將在 my_container 容器內啟動 top 工具並顯示當前資源使用情況。
5.5 附加建議
1. 確保安全性
使用 docker exec
命令時要注意安全性。請確保容器的訪問權限是受限制的,只有授權的用戶才可以在容器內執行命令。
2. 工作自動化
你可以利用使用 docker exec
的腳本來自動化日常任務。這樣可以創建更複雜的工作流程並自動進行容器管理。
#!/bin/bash
for container in $(docker ps -q); do
docker exec $container uptime
done
這個腳本會在所有運行中的容器裡執行 uptime
命令,並顯示它們的運行時間。
3. 日誌和除錯
有時候執行命令可能會失敗。這種情況下查看容器的日誌有助於找出原因。
docker logs my_container
GO TO FULL VERSION