Docker 新手指南:從鏡像到容器,完整概念與操作教學

更新日期: 2025 年 3 月 13 日

在開發應用程式時,我們經常遇到環境不一致的問題,例如:「在我的電腦可以運行,為什麼你的電腦卻報錯?」

這是因為不同裝置的作業系統、Python 版本、安裝的套件可能不同,導致應用程式行為不一致。

Docker 可以幫助我們解決這個問題!

透過 Docker,你可以打包應用程式及其所有相依性,讓它在任何環境下都能穩定運行,無論是 Windows、Mac 還是 Linux。

本篇文章將從最基礎的Docker Image(鏡像)Docker Container(容器)Dockerfile 的概念與操作,幫助新手快速上手 Docker。


什麼是 Docker Image(鏡像)?

概念

Docker Image(鏡像)是一個應用程式的唯讀模板,它包含了應用程式所需的所有環境,例如作業系統、程式語言、函式庫等。

你可以把 Docker 鏡像想像成一個「安裝包」,當你安裝這個安裝包後,就可以使用裡面的應用程式。

例如 python:3.11 鏡像就是一個包含 Python 3.11 環境的鏡像,讓你可以直接在容器中運行 Python,而不需要在本機安裝 Python。

類比

Docker 鏡像就像是作業系統的快照,例如:

  • Windows 安裝包(Windows 10 ISO) → 安裝後變成 Windows 作業系統
  • Python Docker 鏡像(python:3.11) → 啟動後變成 Python 環境的容器

常用指令

指令功能
docker pull python:3.11下載 Python 3.11 鏡像
docker images列出本機的所有鏡像

🔹 示範:下載 Python 3.11 鏡像

docker pull python:3.11

🔹 示範:查看本機已有的鏡像

docker images

如果你看到 Python 鏡像出現在列表中,代表下載成功!


什麼是 Docker Container(容器)?

概念

Docker Container(容器)是從 Docker 鏡像啟動後,實際運行的應用環境

你可以把容器想像成一台「獨立的虛擬機」,但它不像傳統虛擬機那麼笨重,而是一個輕量級的隔離環境

類比

  • Docker Image(鏡像) = 軟體安裝包
  • Docker Container(容器) = 已經安裝並正在執行的應用

換句話說,鏡像只是靜態的模板,而容器則是正在運行的應用程式

常用指令

指令功能
docker run -it python:3.11啟動一個 Python 3.11 容器
docker ps查看正在運行的容器
docker stop <container_id>停止某個容器

🔹 示範:啟動一個 Python 容器並進入互動模式

docker run -it python:3.11

執行後,你會進入 Python 互動環境,顯示 >>> 提示符號,可以輸入 Python 指令,例如:

>>> print("Hello from Docker!")
>>> exit()  # 退出容器

🔹 示範:查看正在運行的容器

docker ps

🔹 示範:停止運行中的容器

docker stop <container_id>

<container_id> 可以從 docker ps 指令中查到)


什麼是 Dockerfile?如何自動化建立環境?

概念

Dockerfile 是一個描述如何建構 Docker 鏡像的腳本。它就像是一本「食譜」,定義了如何從一個基礎鏡像開始,安裝所需的套件、設定環境變數,最後產生一個可用的應用程式環境。

類比

  • Dockerfile = 食譜
  • Docker Image = 根據食譜做出的蛋糕
  • Docker Container = 已經切好、可以食用的蛋糕

透過 Dockerfile,你可以快速自動化建置環境,避免每次都要手動輸入指令。

範例 Dockerfile

假設你有一個 Flask 網頁應用程式(Python 框架),你的專案結構如下:

my-python-app/
│── app.py
│── requirements.txt
│── Dockerfile

app.py(應用程式)

from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    return "Hello from Docker!"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

🔹 requirements.txt(安裝的 Python 套件)

flask>=2.0.0

🔹 Dockerfile(建構 Python 環境的腳本)

# 1. 使用 Python 3.11 的精簡版鏡像
FROM python:3.11-slim

# 2. 設定容器內的工作目錄
WORKDIR /app

# 3. 複製需求文件並安裝 Python 套件
COPY requirements.txt .  
RUN pip install --no-cache-dir -r requirements.txt  

# 4. 複製專案程式碼
COPY . .  

# 5. 暴露 5000 端口,讓外部可以訪問
EXPOSE 5000  

# 6. 容器啟動時執行 Flask 應用程式
CMD ["python", "app.py"]

建立並運行 Docker 容器

指令功能
docker build -t my-python-app .根據 Dockerfile 建立鏡像
docker run -p 5000:5000 my-python-app運行容器並開放 5000 端口

🔹 步驟 1:建立 Docker 鏡像

docker build -t my-python-app .

🔹 步驟 2:運行 Flask 應用程式容器

docker run -p 5000:5000 my-python-app

然後在瀏覽器打開 http://localhost:5000,就會看到 “Hello from Docker!” 🎉


結論:新手學 Docker,應該掌握哪些重點?

Docker Image(鏡像):應用程式的安裝包
Docker Container(容器):實際運行的環境
Dockerfile:定義如何自動建構環境

透過這篇文章,相信你已經掌握 Docker 的基礎概念,現在就動手試試吧!🚀

Similar Posts