iT邦幫忙

2026 iThome 鐵人賽

DAY 6
0
IT Operation

Docker 新手村:從容器到 PostgreSQL 的實戰之路系列 第 6 篇

Day 6 - Container 的生命週期:建立、啟動、停止與重新啟動

  • 分享至 

  • xImage
  •  

學習目標

  • 了解 Container 的生命週期
  • 認識 Created、Running、Exited 等狀態
  • 了解 docker run 與 docker start 的差別
  • 學會重新啟動 Container

Container 也有不同狀態

前幾天已經使用過 docker run、docker start 和 docker stop,今天進一步了解 Container 從建立到停止的完整過程。

Container 建立之後並不是永遠都在執行,而是會根據操作進入不同的狀態。

常見的狀態有:

Created → Running → Exited
   建立       執行       停止

如果 Container 已經停止,也可以再次啟動:

Exited → Running

因此 Container 不需要每次都重新建立。


docker run 與 docker start 的差別

這兩個指令看起來都可以讓 Container 執行,但用途其實不同。

docker run

docker run hello-world

docker run 會使用 Image 建立一個新的 Container 並執行。

如果重複執行:

docker run hello-world
docker run hello-world

就會建立兩個不同的 Container。

docker start

如果 Container 已經存在,只是目前停止,可以使用:

docker start <Container ID>

它不會建立新的 Container,而是重新啟動原本的 Container。

可以簡單記成:

docker run   → 建立新的 + 執行
docker start → 啟動已存在的

停止 Container

要讓正在執行的 Container 停止,可以使用:

docker stop <Container ID>

停止後可以透過:

docker ps -a

查看它的狀態。

通常會看到:

STATUS
Exited

代表 Container 還存在,只是目前沒有執行。


重新啟動 Container

除了先 stop 再 start,Docker 也提供:

docker restart <Container ID>

這個指令會重新啟動 Container。

因此目前可以整理出:

指令 功能
docker run 建立並執行新的 Container
docker start 啟動已存在的 Container
docker stop 停止 Container
docker restart 重新啟動 Container
docker rm 刪除 Container

Container 被停止就是刪除了嗎?

不是。

這也是剛開始學 Docker 時容易搞混的地方。

停止 Container ≠ 刪除 Container

使用 docker stop 只是讓 Container 停止執行,Container 本身依然存在。

只有使用:

docker rm <Container ID>

才會真正刪除 Container。


常見錯誤與修正

  • ❌ 每次都使用 docker run 啟動舊 Container → ✅ 已存在的 Container 使用 docker start
  • ❌ Container 停止就代表被刪除 → ✅ 停止後仍然可以再次啟動
  • ❌ docker ps 看不到就以為 Container 不見了 → ✅ 使用 docker ps -a 查看全部 Container
  • ❌ run 和 start 是一樣的 → ✅ run 會建立新的 Container,start 不會

今日小挑戰(可交付)

  • [ ] 使用 docker ps -a 查看 Container 狀態
  • [ ] 找出一個狀態為 Exited 的 Container
  • [ ] 使用 docker start 啟動 Container
  • [ ] 使用 docker stop 停止 Container
  • [ ] 分辨 docker run 與 docker start 的差別

DAY6 心得

今天進一步了解 Container 的生命週期,也終於弄清楚 docker run 和 docker start 的差別。

之前看到這兩個指令都能讓 Container 執行,很容易以為功能差不多,但其實 docker run 會建立新的 Container,而 docker start 是把原本已經存在的 Container 再次啟動。

了解 Container 的建立、執行、停止與刪除後,對 Docker 的操作流程也更加清楚。之後在管理 PostgreSQL Container 時,就比較不會不小心一直建立新的 Container。


上一篇
Day 5 - Docker Image:下載、查看與刪除映像檔
下一篇
Day 7 - 超連結與圖片的魔法
系列文
Docker 新手村:從容器到 PostgreSQL 的實戰之路 共 14 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言