iT邦幫忙

2026 iThome 鐵人賽

DAY 12
0
IT Operation

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

Day 12 - docker build:建立自己的第一個 Docker Image

  • 分享至 

  • xImage
  •  

學習目標

  • 學會使用 docker build
  • 了解 Dockerfile 如何轉換成 Image
  • 認識 -t 參數的用途
  • 使用自己建立的 Image 啟動 Container

從 Dockerfile 建立 Image

Day 11 認識了 Dockerfile,也知道它就像建立 Image 的「說明書」。

今天要正式使用 Dockerfile 建立自己的第一個 Image。

先準備一個簡單的 app.js:

console.log("Hello Docker!");

資料夾結構如下:

my-docker-app
│
├── Dockerfile
└── app.js

Dockerfile 則使用昨天的內容:

FROM node:20

WORKDIR /app

COPY . .

CMD ["node", "app.js"]

準備完成後,就可以開始建立 Image。


使用 docker build

在 Dockerfile 所在的資料夾開啟終端機,輸入:

docker build -t my-app .

這行指令可以拆成:

  • docker build:建立 Image
  • -t:替 Image 設定名稱或 Tag
  • my-app:Image 名稱
  • .:使用目前資料夾作為 Build Context

其中最後面的 . 很容易被忽略,但它代表 Docker 建置時會使用目前資料夾中的檔案。

建立完成後,可以輸入:

docker images

如果看到 my-app,就代表自己的 Image 已經成功建立。


使用自己的 Image

有了 Image 之後,就可以像之前使用 hello-world 一樣建立 Container:

docker run my-app

執行後應該會看到:

Hello Docker!

整個流程就是:

Dockerfile
    ↓
docker build
    ↓
my-app Image
    ↓
docker run
    ↓
Container
    ↓
Hello Docker!

這次和之前最大的不同,就是使用的 Image 是自己透過 Dockerfile 建立的。


Image Tag

除了替 Image 命名,也可以自己設定版本:

docker build -t my-app:v1 .

其中:

my-app → Image 名稱
v1     → Tag

再使用:

docker images

就可以看到 Image 的名稱與 Tag。

透過不同 Tag,可以協助區分不同版本的 Image。


常見錯誤與修正

  • ❌ docker build 後忘記加 . → ✅ 最後加上 . 指定目前資料夾
  • ❌ 找不到 Dockerfile → ✅ 確認終端機目前所在的資料夾
  • ❌ 建立成功卻找不到 Image → ✅ 使用 docker images 查看
  • ❌ 修改程式後直接執行舊 Image → ✅ 修改內容後需要重新 Build Image

今日小挑戰(可交付)

  • [ ] 建立一個簡單的 app.js
  • [ ] 使用 Dockerfile 建立 Image
  • [ ] 使用 docker images 找到自己的 Image
  • [ ] 使用 docker run my-app 建立 Container
  • [ ] 嘗試替 Image 加上 v1 Tag

DAY12 心得

今天終於使用昨天寫的 Dockerfile,實際建立了自己的第一個 Docker Image。

之前都是使用 Docker Hub 上已經準備好的 Image,今天自己從 Dockerfile 開始建立後,對 Dockerfile → Image → Container 的流程變得更清楚。

其中 docker build -t my-app . 最需要注意的是最後面的 .,一開始很容易忽略。成功建立 Image 並執行出 Hello Docker! 後,也更能理解 Dockerfile 的用途。

接下來就可以在這些基礎上繼續往 PostgreSQL 前進,把前面學到的 Docker 操作真正應用到資料庫環境中。


上一篇
Day 11 - Dockerfile 是什麼?開始打造自己的 Image
下一篇
Day 13 - PostgreSQL 是什麼?開始進入資料庫世界
系列文
Docker 新手村:從容器到 PostgreSQL 的實戰之路 共 14 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言