Dockerfile 入門教學:從零建立你的第一個映像檔

更新 發佈閱讀 5 分鐘

近年來,Docker 已成為軟體開發與部署的標準工具之一。無論是後端工程師、資料科學家,還是 DevOps 人員,都會用它來快速建置環境與部署應用。
其中最關鍵的一個檔案就是 — Dockerfile
這篇文章將帶你從零開始了解 Dockerfile 是什麼、怎麼寫、常見錯誤與實戰範例。

一、什麼是 Dockerfile?

簡單來說,Dockerfile 是一份自動化建構映像檔的腳本
它記錄了從基底系統開始,一步步建立環境的指令,例如安裝套件、複製程式碼、設定執行命令等。

舉個比喻:

Dockerfile 就像一份「食譜」,你把步驟寫清楚,Docker 就能自動幫你「煮出」一個可執行的容器映像。

二、基本結構與常用指令

以下是最常用的 Dockerfile 指令:
FROM:指定基底映像,例如 Ubuntu、Node.js
WORKDIR:設定容器內的工作目錄
COPY:複製檔案到容器中
RUN:在建構時執行指令(例如安裝套件)
CMD:指定容器啟動時要執行的指令
EXPOSE:開放容器的對外連接埠
ENV:設定環境變數

三、範例:建立一個 Node.js 應用映像檔

假設你有一個簡單的 Node.js 專案,結構如下:

docker-file/
├── app.js
├── package.json
└── Dockerfile

🔹 app.js

const express = require('express');
const app = express();
const PORT = 3000;

app.get('/', (req, res) => {
res.send('Hello Docker!');
});

app.listen(PORT, () => {
console.log(`Server running on port ${PORT}`);
});

🔹 package.json

{
"name": "demo-app",
"version": "1.0.0",
"dependencies": {
"express": "^4.17.1"
}
}



Dockerfile

# 使用官方 Node.js 14 作為基底映像
FROM node:14

# 設定工作目錄
WORKDIR /usr/src/app

# 複製套件資訊
COPY package*.json ./

# 安裝依賴套件
RUN npm install

# 複製所有程式碼
COPY . .

# 開放 3000 port
EXPOSE 3000

# 啟動應用
CMD ["node", "app.js"]

四、建構與執行容器

Step 1️:建構映像檔

docker build -t my-nodejs-app:1 .

這行指令會根據 Dockerfile 內容,自動建立一個名為 my-nodejs-app 的映像檔。

Step 2️:查看映像檔

docker images

Step 3️:執行容器

docker run -d -p 3000:3000 my-nodejs-app:1

現在打開瀏覽器輸入 http://localhost:3000
你就會看到「Hello Docker!」的訊息

五、總結

重點 說明
Dockerfile 是映像建構的自動化腳本 讓環境部署更一致、更方便
常用指令:FROM、COPY、RUN、CMD 每個指令都是環境設定的一步
實作重點:build → run → 測試 逐步驗證環境可用性

結語

Dockerfile 的出現,大幅降低了環境設定的難度,讓「開發即部署」成為可能。 無論你是開發新手或 DevOps 工程師,都值得花點時間掌握這項技能。


留言
avatar-img
留言分享你的想法!
avatar-img
小猴工程師
2會員
28內容數
以工程師視角拆解技術與生活的連結。專長 DevOps、AI 與區塊鏈,把艱深的技術轉化為易懂的故事。 文章主題橫跨技術筆記、實作教學與個人經驗分享。 寫作理念:讓每個想靠技術改變生活的人,都能在這裡找到啟發。
小猴工程師的其他內容
2025/10/14
路由器和交換器在建立網路時都扮演著關鍵角色,但功能截然不同。本文將深入解析兩者的職責、如何正確連接,以及在何種情況下需要額外添購交換器,幫助您打造更穩定、安全的家庭或辦公室網路。
Thumbnail
2025/10/14
路由器和交換器在建立網路時都扮演著關鍵角色,但功能截然不同。本文將深入解析兩者的職責、如何正確連接,以及在何種情況下需要額外添購交換器,幫助您打造更穩定、安全的家庭或辦公室網路。
Thumbnail
2025/09/12
Elasticsearch 的 index 會隨著時間變大,導致查詢變慢、儲存成本升高。ILM (Index Lifecycle Management) 可以自動化: Index 的 rollover(建立新 index) Index 的 刪除(清理舊資料) Index 的 轉冷 / 凍結(降
2025/09/12
Elasticsearch 的 index 會隨著時間變大,導致查詢變慢、儲存成本升高。ILM (Index Lifecycle Management) 可以自動化: Index 的 rollover(建立新 index) Index 的 刪除(清理舊資料) Index 的 轉冷 / 凍結(降
2025/04/15
這篇文章提供教學,如何使用 Python 和 Pandas 函式庫將 Elasticsearch 的 JSON 資料(透過 Elasticdump 匯出)轉換成 Excel 可讀取且支援繁體中文的 CSV 檔案,並解決常見的中文編碼問題。
2025/04/15
這篇文章提供教學,如何使用 Python 和 Pandas 函式庫將 Elasticsearch 的 JSON 資料(透過 Elasticdump 匯出)轉換成 Excel 可讀取且支援繁體中文的 CSV 檔案,並解決常見的中文編碼問題。
看更多
你可能也想看
Thumbnail
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
Thumbnail
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
Thumbnail
Docker-Compose負責對container做快速編排。設定檔預設名稱為docker-compose.yml,在檔案中,可以透過COMPOSE_FILE或-f對設定進行定義。 想要將專案透過Docker-Compose部署,需要創建docker-compose.yml和Dockerfile
Thumbnail
Docker-Compose負責對container做快速編排。設定檔預設名稱為docker-compose.yml,在檔案中,可以透過COMPOSE_FILE或-f對設定進行定義。 想要將專案透過Docker-Compose部署,需要創建docker-compose.yml和Dockerfile
Thumbnail
獲取Image docker pull 查看Image docker images 可以查看REPOSITORY、TAG、IMAGE ID、CREATED與SIZE。 創建Image docker build [OPTIONS] PATH | URL | - 上傳Imag
Thumbnail
獲取Image docker pull 查看Image docker images 可以查看REPOSITORY、TAG、IMAGE ID、CREATED與SIZE。 創建Image docker build [OPTIONS] PATH | URL | - 上傳Imag
Thumbnail
Docker是由GO語言實現,是一個在GitHub上開發原始碼的專案。它的目標是實現羽量級的作業系統虛擬化。讓使用者操作Docker,就像是操作一個羽量級的虛擬機器。 優勢 快速發表和部署 高效的部署和擴充 資源使用率高 管理簡單 核心 Image映像檔 Docker
Thumbnail
Docker是由GO語言實現,是一個在GitHub上開發原始碼的專案。它的目標是實現羽量級的作業系統虛擬化。讓使用者操作Docker,就像是操作一個羽量級的虛擬機器。 優勢 快速發表和部署 高效的部署和擴充 資源使用率高 管理簡單 核心 Image映像檔 Docker
Thumbnail
前言 大家好上次我們教了如何建立自己的 Docker Image,今天我們要來教怎麼把自己做好的 Docker Image 上傳到 Docker Hub,如果以後自己在公司有搭建 Docker Registry,也可以用同樣方式上傳到公司的 Docker Registry 私有倉庫 登入 Doc
Thumbnail
前言 大家好上次我們教了如何建立自己的 Docker Image,今天我們要來教怎麼把自己做好的 Docker Image 上傳到 Docker Hub,如果以後自己在公司有搭建 Docker Registry,也可以用同樣方式上傳到公司的 Docker Registry 私有倉庫 登入 Doc
Thumbnail
前言 大家好上次我們教了如何下載 Docker Image 使用,今天我們要教如何產出自己的 Image,這次會使用一個 Dockerfile 範例,自行打包 Docker Image,初步練習使用 Docker 指令 下載 Dockerfile 教學檔案 在這裡我已經幫忙寫好一個 Docke
Thumbnail
前言 大家好上次我們教了如何下載 Docker Image 使用,今天我們要教如何產出自己的 Image,這次會使用一個 Dockerfile 範例,自行打包 Docker Image,初步練習使用 Docker 指令 下載 Dockerfile 教學檔案 在這裡我已經幫忙寫好一個 Docke
Thumbnail
前言 上次講到 Dockerfile、DockerImage、Docker Container 他們之間的關係,今天我們要來熟悉 Docker Image 如何使用,教你如何抓取雲端上的 Docker Image, Docker Image 下載來源 當我們今天要要使用 Docker Imag
Thumbnail
前言 上次講到 Dockerfile、DockerImage、Docker Container 他們之間的關係,今天我們要來熟悉 Docker Image 如何使用,教你如何抓取雲端上的 Docker Image, Docker Image 下載來源 當我們今天要要使用 Docker Imag
Thumbnail
前言 上次我們初步體驗 Docker 快速佈署能力,今天我們要來講解 Dockerfile、Docker Image 與 Docker Container 這些常見的名詞,我們來了解在我們佈署的時候做哪些事情 Docker 佈署流程 首先看到如下圖上半部,在我們一個完整的佈署流程,我們會先將我
Thumbnail
前言 上次我們初步體驗 Docker 快速佈署能力,今天我們要來講解 Dockerfile、Docker Image 與 Docker Container 這些常見的名詞,我們來了解在我們佈署的時候做哪些事情 Docker 佈署流程 首先看到如下圖上半部,在我們一個完整的佈署流程,我們會先將我
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News