翻译说明:本文为 MobileSetting 原文 的繁体中文转简体中文翻译。除繁简转换、明显错别字和排版外,保留原文标题、事实、观点、数字、结构和第一人称表达。
Docker 入门只需三步:安装 Docker Desktop → 执行 docker run hello-world 测试 → 用 Dockerfile 打包自己嘅 App,整个流程 30 分钟内完成,Mac/Windows/Linux 全支援。
「喺我部电脑跑得,点解上到伺服器就唔得?」呢个系几乎每个开发者都遇过嘅问题。Docker 就系解决呢个问题嘅工具。它把你嘅 App 连同所有依赖(Python 版本、套件、环境变数)一起打包成一个「容器」,无论喺边部电脑、边个作业系统,跑出嚟嘅效果都一样。学识 Docker,部署问题少一半。
Docker 系咩?点解现代开发必学?
Docker 系一个容器化工具,把应用程式及其所有运行依赖打包成一个「Image」(镜像),再从 Image 启动「Container」(容器)运行。
唔学 Docker 会遇到嘅问题:
- 本地开发环境系 Python 3.11,伺服器系 Python 3.9,行为唔同
- 新同事装环境要半日,每次都漏步骤
- 部署到 AWS/GCP 需要额外配置,难以重现
学识 Docker 之后:
- 一个
Dockerfile定义所有依赖,任何人都可以一条指令重现环境 - 开发、测试、生产环境完全一致
- 部署到 Zeabur、Railway、Render、AWS ECS 都用同一个 Image
2026 年,几乎所有云端部署平台(Zeabur、Railway、Fly.io、GCP Cloud Run)都接受 Docker 格式。学识 Docker 等于解锁所有现代云端平台。
安装 Docker Desktop(Mac/Windows 步骤)
Windows 安装:
- 确认 Windows 版本:需要 Windows 10 版本 2004 以上(Build 19041+)或 Windows 11
- 确认已启用 WSL2(Windows Subsystem for Linux 2):
- 打开 PowerShell(管理员),输入:
wsl --install - 重启电脑
- 打开 PowerShell(管理员),输入:
- 去 docker.com/products/docker-desktop 下载 Docker Desktop for Windows
- 安装时选择「Use WSL 2 instead of Hyper-V」
- 安装完成后重启,打开 Docker Desktop,等待图示由橙色变绿色
macOS 安装:
- 去同一个页面,根据你的晶片选择 Intel 版或 Apple Silicon(M1/M2/M3)版
- 下载
.dmg文件,拖入 Applications 资料夹 - 打开 Docker Desktop,菜单栏会出现 Docker 图示
- 首次启动需要输入系统密码授权
验证安装成功:
打开 Terminal(或 Windows 的 PowerShell),输入:
docker --version
docker run hello-world
如果见到 “Hello from Docker!” 讯息,代表安装成功,Docker 正常运行。
基本指令教学(run/build/push/pull/compose)
学识以下指令,足够应付日常 80% 嘅 Docker 操作:
下载并运行现有 Image:
docker pull nginx # 从 Docker Hub 下载 nginx Image
docker run -p 8080:80 nginx # 启动 nginx,把容器 80 端口映射到本地 8080
打开浏览器输入 localhost:8080,就可以见到 nginx 欢迎页面。
建立自己嘅 Image:
先在项目根目录建立 Dockerfile:
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]
然后:
docker build -t my-python-app . # 建立 Image,名叫 my-python-app
docker run -p 5000:5000 my-python-app # 启动容器
其他常用指令:
docker ps # 查看正在运行嘅容器
docker ps -a # 查看所有容器(包括已停止)
docker stop [容器ID] # 停止容器
docker rm [容器ID] # 删除容器
docker images # 查看本地所有 Image
docker rmi [Image名] # 删除 Image
docker logs [容器ID] # 查看容器日志
推送到 Docker Hub:
docker login
docker tag my-python-app 你的用户名/my-python-app:latest
docker push 你的用户名/my-python-app:latest
推送后,任何人(或任何伺服器)都可以用 docker pull 你的用户名/my-python-app 下载你嘅 Image。
Docker Compose:多容器应用管理
现实中,应用程式通常唔止一个容器——Web App + Database + Cache 系常见组合。Docker Compose 让你用一个 YAML 文件管理多个容器。
典型 docker-compose.yml(Django + PostgreSQL):
version: '3.8'
services:
web:
build: .
ports:
- "8000:8000"
environment:
- DATABASE_URL=postgresql://user:pass@db:5432/mydb
depends_on:
- db
db:
image: postgres:15
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: pass
POSTGRES_DB: mydb
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
常用 Compose 指令:
docker compose up -d # 背景启动所有服务
docker compose down # 停止并移除所有容器
docker compose logs -f # 查看所有服务日志(即时更新)
docker compose ps # 查看服务状态
docker compose exec web bash # 进入 web 容器的 shell
Docker Compose 系本地开发同测试最方便嘅工具,一条 docker compose up 就可以把整个开发环境拉起,唔需要逐个服务手动启动。
部署到 Zeabur/Railway(从本地到云端)
有咗 Dockerfile,部署到云端非常简单。以 Zeabur 同 Railway 为例:
部署到 Zeabur:
- 把代码(包括 Dockerfile)push 到 GitHub
- 去 zeabur.com,建立新 Project
- 选「Deploy from GitHub」,授权并选择你的 Repository
- Zeabur 会自动侦测 Dockerfile,建立并部署
- 部署完成后,得到一个
.zeabur.app域名
环境变数设定:
喺 Zeabur 或 Railway 的 Dashboard 设定 Environment Variables,唔好把敏感资讯(API Key、DB 密码)写喺代码入面。Dockerfile 用 ENV 只设定预设值,真实值从平台 Dashboard 注入。
Railway 部署步骤类似:
- 去 railway.app,连接 GitHub
- 选 Repository,Railway 自动侦测 Dockerfile 并部署
- Railway 亦支援直接喺 Dashboard 添加 PostgreSQL、Redis 等服务
两个平台都提供免费试用额度(Railway $5/月免费,Zeabur 按资源计费),对个人项目足够。
常见问题 FAQ
Q1:Docker 同虚拟机(VM)有咩分别?
虚拟机模拟完整硬件,每个 VM 跑独立作业系统,资源消耗大(通常几 GB RAM)。Docker 容器共享主机作业系统内核,只隔离应用层,启动只需几秒,资源消耗小好多。同样一部电脑可以跑几十个 Docker 容器,但可能只跑得起几个 VM。
Q2:Docker Desktop 免费吗?
个人使用完全免费。企业用途(员工超过 250 人或年收入超过 $1,000 万美元)需要付费订阅。对个人开发者同小型团队,免费版系足够嘅。
Q3:点解我的容器一停止就失去所有数据?
容器本身系无状态嘅(Stateless),停止后数据消失系正常行为。要持久保存数据,需要用 Volume(-v 标志)或 Bind Mount 把容器内嘅路径映射到主机目录,或使用外部数据库服务。
Q4:.dockerignore 系做咩嘅?
同 .gitignore 类似,.dockerignore 告诉 Docker 喺 COPY . . 时忽略哪些文件。常见内容:node_modules/、.env、__pycache__/、.git/。不加 .dockerignore 会导致 Image 体积庞大,build 时间增加。
Q5:Windows 上跑 Docker 比 Mac/Linux 慢?
系嘅,Windows 下 Docker Desktop 通过 WSL2 运行,I/O 性能略逊于原生 Linux。如果你的项目 I/O 密集(如大量文件操作),把代码放喺 WSL2 文件系统(/home/user/)而非 Windows 文件系统(/mnt/c/)可以大幅提升速度。




