vocus logo

方格子 vocus

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
小猴工程師
2會員
31內容數
以工程師視角拆解技術與生活的連結。專長 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
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
vocus 最具指標性的創作者社群──「野格團」, 2026 年春季,這支充滿專業、熱情的團隊再次擴編,迎來了 8 位實力堅強的「個人主題專家」新成員 💫💫💫 從投資理財、自我成長、閱讀書評到電影戲劇,他們各自帶著獨特的「創作超能力」準備在格友大廳與大家見面。
Thumbnail
vocus 最具指標性的創作者社群──「野格團」, 2026 年春季,這支充滿專業、熱情的團隊再次擴編,迎來了 8 位實力堅強的「個人主題專家」新成員 💫💫💫 從投資理財、自我成長、閱讀書評到電影戲劇,他們各自帶著獨特的「創作超能力」準備在格友大廳與大家見面。
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 佈署流程 首先看到如下圖上半部,在我們一個完整的佈署流程,我們會先將我
Thumbnail
前言 大家好在先前我們講了什麼是 Docker,Docker 好處有什麼以及怎麼安裝 Docker,今天我們要來開始初體驗 Docker 容器,使用後您會發現 Docker 非常的方便快速 Docker Hub 介紹 首先在開始學怎麼抓取 Docker Image 之前,我們要先來介紹 Doc
Thumbnail
前言 大家好在先前我們講了什麼是 Docker,Docker 好處有什麼以及怎麼安裝 Docker,今天我們要來開始初體驗 Docker 容器,使用後您會發現 Docker 非常的方便快速 Docker Hub 介紹 首先在開始學怎麼抓取 Docker Image 之前,我們要先來介紹 Doc
Thumbnail
前言 上次我們講到 Docker 的功用與好處,今天我們要在講解,如何安裝 Docker 這個容器,讓我們在之後的教學應用更好的實作與練習,現在讓我們開始吧 Docker Engine 與 Docker Desktop 首先在講解怎麼安裝 Docker 時,我們先講解 Docker Engin
Thumbnail
前言 上次我們講到 Docker 的功用與好處,今天我們要在講解,如何安裝 Docker 這個容器,讓我們在之後的教學應用更好的實作與練習,現在讓我們開始吧 Docker Engine 與 Docker Desktop 首先在講解怎麼安裝 Docker 時,我們先講解 Docker Engin
Thumbnail
前言 上次我們針對 Docker 這樣容器化技術做了一點介紹,今天我們要來講解 Docker 架構,你是否發現在每次程式上伺服器的流程很麻煩呢 ? 是否發現你寫的程式在別的作業系統不能用呢 ? 如果你遇到這些問題,Docker 都可以幫助你解決這些問題 Docker 架構 在 Docker 這
Thumbnail
前言 上次我們針對 Docker 這樣容器化技術做了一點介紹,今天我們要來講解 Docker 架構,你是否發現在每次程式上伺服器的流程很麻煩呢 ? 是否發現你寫的程式在別的作業系統不能用呢 ? 如果你遇到這些問題,Docker 都可以幫助你解決這些問題 Docker 架構 在 Docker 這
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News