iT邦幫忙

2026 iThome 鐵人賽

DAY 11
0
IT Operation

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

Day 11 - Dockerfile 是什麼?開始打造自己的 Image

  • 分享至 

  • xImage
  •  

學習目標

  • 認識 Dockerfile 的用途
  • 了解 Dockerfile 與 Image 的關係
  • 認識常見的 Dockerfile 指令
  • 建立第一個簡單的 Dockerfile

Dockerfile 是什麼?

前面使用 Docker 時,不管是 hello-world、Nginx,都是直接使用別人已經建立好的 Image。

但如果今天想把自己的程式放進 Docker,就需要自己建立 Image。

這時就會使用到 Dockerfile。

Dockerfile 是一個純文字檔案,裡面會記錄建立 Image 時需要執行的步驟。

可以簡單理解成:

Dockerfile
    ↓
建立 Image
    ↓
建立 Container
    ↓
執行程式

就像是一份「製作 Image 的說明書」,Docker 會按照裡面的指令一步一步建立需要的環境。


建立第一個 Dockerfile

首先建立一個新的資料夾,例如:

my-docker-app

接著在裡面新增一個檔案:

Dockerfile

要注意 Dockerfile 預設沒有副檔名,不是 Dockerfile.txt。

今天先建立一個簡單的 Node.js 環境:

FROM node:20

WORKDIR /app

COPY . .

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

看起來只有幾行,但每一行都有不同的作用。


Dockerfile 常見指令

FROM

FROM node:20

FROM 用來指定建立 Image 時要使用的基礎 Image。

這裡代表使用 Node.js 20 的 Image。


WORKDIR

WORKDIR /app

設定 Container 裡的工作目錄。

後面的操作就會以 /app 作為主要工作位置。


COPY

COPY . .

COPY 可以將本機的檔案複製到 Image 裡。

這裡的意思就是把目前資料夾中的內容複製到 Container 的工作目錄。


CMD

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

CMD 用來設定 Container 啟動後預設要執行的指令。

這裡代表執行:

node app.js

Dockerfile 和 Image 的關係

今天最重要的概念可以整理成:

撰寫 Dockerfile
      ↓
docker build
      ↓
建立 Image
      ↓
docker run
      ↓
建立 Container

前面幾天我們都是直接下載別人的 Image,現在則開始準備建立屬於自己的 Image。

下一步就是實際使用 docker build 將 Dockerfile 建立成 Image。


常見錯誤與修正

  • ❌ Dockerfile 寫成 Dockerfile.txt → ✅ Dockerfile 預設不需要副檔名
  • ❌ 把 Dockerfile 當成 Image → ✅ Dockerfile 是建立 Image 的設定檔
  • ❌ 忘記使用 FROM → ✅ Dockerfile 通常需要指定基礎 Image
  • ❌ COPY 路徑設定錯誤 → ✅ 注意本機與 Container 中的檔案位置

今日小挑戰(可交付)

  • [ ] 建立一個 Dockerfile
  • [ ] 認識 FROM 的用途
  • [ ] 認識 WORKDIR 的用途
  • [ ] 認識 COPY 的用途
  • [ ] 認識 CMD 的用途

DAY11 心得

今天第一次接觸 Dockerfile,之前使用 Docker 都是直接下載現成的 Image,所以沒有特別想過這些 Image 是怎麼建立出來的。

學習 Dockerfile 後,才知道可以把建立環境需要的步驟寫在一個檔案裡,再讓 Docker 根據這些設定建立 Image。

目前先認識了 FROM、WORKDIR、COPY 和 CMD 幾個基本指令。雖然還沒有真正把自己的 Image 建立出來,但已經大概了解 Dockerfile 在整個流程中的位置,下一步就可以實際使用 docker build 來建立自己的 Image。


上一篇
Day 10 - 表單進階魔法
下一篇
Day 12 - docker build:建立自己的第一個 Docker Image
系列文
Docker 新手村:從容器到 PostgreSQL 的實戰之路 共 14 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言