Docker 容器修行錄

The Complete Guide to Container Lifecycle

壹 · 開啟與啟動

開啟新容器 (Run)
這是最常用的指令,用於從映像檔 (Image) 創建並啟動一個全新的容器。
Terminal
# 範例:在背景啟動一個 Nginx 網頁伺服器
# -d: 背景執行 (Detach)
# -p: 端口映射 (主機:容器)
# --name: 為容器取個好記的名字
docker run -d -p 8080:80 --name my-web-server nginx
啟動已停止的容器 (Start)
如果容器已經存在但處於停止狀態,使用此指令喚醒它。
Terminal
# 使用名稱或 ID 啟動
docker start my-web-server

貳 · 狀態與停止

查看容器狀態 (List)
查看當前世間(主機)有哪些容器正在運行。
Terminal
# 查看正在運行的容器
docker ps

# 查看所有容器 (包含已停止的屍體)
docker ps -a
停止容器 (Stop)
優雅地停止容器運行,類似於電腦的「關機」。
Terminal
# 停止指定容器
docker stop my-web-server

參 · 進入、退出與切換

此乃 Docker 操作之精髓,請務必區分「開啟新視窗」與「接管主視窗」之別。

進入容器 (Exec) 推薦
在運行的容器中開啟一個新的終端機視窗。
Terminal
# -it: 交互模式 (Interactive + TTY)
# bash: 指定使用的 shell (若是 Alpine 系統則改用 sh)
docker exec -it my-web-server bash
退出容器 (Exit)
離開當前的終端機環境。
Container Shell
# 方法一:輸入指令
exit

# 方法二:快捷鍵
Ctrl + D
重要觀念: 如果你是用 exec 進入的,exit 只會關閉那個視窗,容器繼續運行。如果你是用 attach 進入的,exit 會導致容器停止運行
切換容器心法 (Switching)
Docker 沒有直接的「切換鍵」。切換的本質是:「脫離」當前容器 $\rightarrow$ 「進入」目標容器
場景演練:
  1. 假設你正在容器 A 裡面操作...
  2. 想保留 A 運行並回到主機:按下 Ctrl + P,接著按 Q (這叫 Detach)。
  3. 現在你回到主機了。
  4. 輸入 docker exec -it container_B bash 進入容器 B。
  5. 處理完 B,輸入 exit 離開 B。
  6. 再用 docker exec -it container_A bash 回到 A。

肆 · 刪除與清理

刪除容器 (Remove)
移除容器實例。注意:容器必須先「停止」才能被普通刪除。
Terminal
# 刪除已停止的容器
docker rm my-web-server

# 強制刪除 (包含正在運行的,慎用!)
docker rm -f my-web-server
一鍵清理 (Prune)
清理戰場。一次性刪除所有「已停止」的容器,釋放空間。
Terminal
docker container prune