Docker start vs restart:差異快速看懂
docker start 與 docker restart 都能讓容器跑起來,
但語意與清理範圍完全不同。
1.指令行為比較
| 指令 |
行為說明 |
適用狀態 |
docker start |
啟動「已停止」的容器 |
只能是 stopped |
docker restart |
先 stop 再 start |
running / stopped |
2.執行期影響比較
| 項目 |
start |
restart |
| 送 SIGTERM / SIGKILL |
❌ |
✅ |
| PID 改變 |
❌ |
✅ |
| 記憶體狀態重置 |
❌ |
✅ |
| 中斷連線 |
❌ |
✅ |
| 停機時間 |
無 |
短暫 |
3. restart 的清理重點
| Area |
Cleaned? |
| In-memory data |
✅ |
| Processes / threads |
✅ |
| Open sockets |
✅ |
| TCP connections |
✅ |
| Writable filesystem |
❌ |
| Volumes |
❌ |
| Env / config |
❌ |
| Image |
❌ |
4. 結論:
restart 只清理「執行期狀態」,不清理「持久狀態」。
4.1 什麼時候用哪個?
| 情境 |
建議 |
| 容器正常結束,要再跑一次 |
docker start |
| 程式卡住、連線異常 |
docker restart |
| 設定或資料壞掉 |
重新建立容器 |
4.2 快速記憶法
- start:執行容器
- restart:關閉再執行容器
- rm + run:刪除重新執行容器