目錄

docker stop、start、restart、kill 指令:停止與重新啟動容器

docker stop、start、restart、kill、pause 與 unpause 用來控制容器執行狀態;容器生命週期的完整流程見 容器生命週期。

語法

docker stop [參數] 容器 [容器...]
docker start [參數] 容器 [容器...]
docker restart [參數] 容器 [容器...]
docker kill [參數] 容器 [容器...]
docker pause 容器 [容器...]
docker unpause 容器 [容器...]

參數

指令參數說明
docker stop-s, --signal string傳送給容器的訊號
docker stop-t, --timeout int等待幾秒後強制結束容器
docker start-a, --attach附加至容器的 STDOUT/STDERR,並轉送訊號
docker start--checkpoint string從指定的 checkpoint 還原
docker start--checkpoint-dir string使用自訂的 checkpoint 儲存目錄
docker start--detach-keys string覆寫用來離開附加狀態的按鍵組合
docker start-i, --interactive附加容器的 STDIN
docker restart-s, --signal string傳送給容器的訊號
docker restart-t, --timeout int等待幾秒後強制結束容器
docker kill-s, --signal string傳送給容器的訊號

pause 與 unpause 的說明沒有列出其他參數。stop、start、restart、kill 與 pause 也可用 docker container 子命令形式呼叫。

範例

stop 的等待時間與結束狀態

$ time docker stop web
web
real	0m 0.50s
user	0m 0.00s
sys	0m 0.01s

$ time docker stop sleeper
sleeper
real	0m 10.44s
user	0m 0.01s
sys	0m 0.01s

$ docker ps -a --format 'table {{.Names}}\t{{.Status}}'
NAMES        STATUS
sleeper      Exited (137) 1 second ago
web          Exited (0) 12 seconds ago
uses-redis   Up 51 seconds
registry     Up About a minute
  • web 在 0.50 秒後停止,狀態是 Exited (0):nginx 收到 SIGTERM 就正常結束。
  • sleeper 等了 10.44 秒,狀態是 Exited (137):sleep 是容器裡的 PID 1,沒有處理 SIGTERM,Docker 等滿預設的 10 秒後改送 SIGKILL(137 = 128 + 9)。詳見 容器生命週期 的 PID 1 說明。
  • docker stop --help 的 -t, --timeout 可設定等待幾秒後強制結束容器;這個範例呈現預設等待到強制結束的差異。
  • docker ps -a 列出已停止的容器,uses-redis 和 registry 仍顯示執行中。

start、restart 與 kill

$ docker start web
web

$ docker restart -t 2 web
web

$ docker kill sleeper
Error response from daemon: cannot kill container: sleeper: container ebcd31ea947204593383614f0fa2b0b9baba719e4858042e8120b3d544468f20 is not running

$ docker start sleeper && docker kill sleeper
sleeper
sleeper

$ docker ps -a --format 'table {{.Names}}\t{{.Status}}'
NAMES        STATUS
sleeper      Exited (137) Less than a second ago
web          Up 2 seconds
uses-redis   Up 54 seconds
registry     Up About a minute
  • docker start 啟動已停止的 web;docker restart -t 2 以 2 秒逾時重新啟動它。
  • docker kill sleeper 對已停止容器失敗,錯誤指出容器沒有在執行;先 start 再 kill 則兩個指令都成功。
  • kill 後 sleeper 顯示 Exited (137),而 web 顯示 Up。

pause 與 unpause

$ docker pause web
web

$ docker ps --format 'table {{.Names}}\t{{.Status}}'
NAMES        STATUS
web          Up 2 seconds (Paused)
uses-redis   Up 55 seconds
registry     Up About a minute

$ docker exec web nginx -v
Error response from daemon: Container web is paused, unpause the container before exec

$ docker unpause web
web
  • docker pause 暫停容器內所有程序,狀態欄會標示 (Paused)。
  • 暫停期間 docker exec 失敗,錯誤訊息要求先 unpause;docker unpause 會解除暫停。

送出訊號讓 nginx 重新載入

$ docker kill -s HUP web
web

$ docker logs --tail 3 web
2026/10/25 15:30:32 [notice] 1#1: signal 17 (SIGCHLD) received from 22
2026/10/25 15:30:32 [notice] 1#1: worker process 22 exited with code 0
2026/10/25 15:30:32 [notice] 1#1: signal 29 (SIGIO) received

$ docker kill -s HUP web2
web2

$ docker logs web2 2>&1 | grep -E 'SIGHUP|reconfiguring'
2026/10/25 15:31:00 [notice] 1#1: signal 1 (SIGHUP) received, reconfiguring
2026/10/25 15:31:00 [notice] 1#1: reconfiguring
  • docker kill -s HUP 將指定訊號送給容器;這裡的 web2 日誌明確顯示收到 SIGHUP 後正在重新載入。
  • docker logs --tail 3 限制顯示最近三行;另一個範例把 stderr 合併到 stdout,再用 grep 篩選日誌。

容器名稱不存在

$ docker stop nosuch
Error response from daemon: No such container: nosuch

指定的容器名稱不存在時,Docker 會回報 No such container。

相關章節

動手練習

練習:容器 sleeper 已停止。先啟動它,再立即強制結束,最後列出所有容器的名稱與狀態。

答案
docker start sleeper && docker kill sleeper
docker ps -a --format 'table {{.Names}}\t{{.Status}}'

常見問題

為什麼 docker stop sleeper 要等約 10 秒?

這次 docker stop sleeper 花了 10.44 秒,之後狀態是 Exited (137);docker stop --help 說明 -t, --timeout 是等待幾秒後才強制結束容器。

docker kill 可以用在已停止的容器嗎?

不行。對已停止的 sleeper 執行 docker kill 時,Docker 回報容器目前未執行;先用 docker start sleeper 啟動後才能 kill。

容器 pause 之後還能用 docker exec 嗎?

不行。範例中的 docker exec web nginx -v 回報容器已暫停,必須先 docker unpause web。

如何讓 nginx 重新載入設定而不停止容器?

對容器送出 HUP:docker kill -s HUP web2。日誌會顯示 SIGHUP received, reconfiguring。

更新於 2026年10月26日