Docker 入门教学 2026:香港开发者从零开始学容器化部署

3次阅读
没有评论

翻译说明:本文为 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 安装:

  1. 确认 Windows 版本:需要 Windows 10 版本 2004 以上(Build 19041+)或 Windows 11
  2. 确认已启用 WSL2(Windows Subsystem for Linux 2):
    • 打开 PowerShell(管理员),输入:wsl --install
    • 重启电脑
  3. docker.com/products/docker-desktop 下载 Docker Desktop for Windows
  4. 安装时选择「Use WSL 2 instead of Hyper-V」
  5. 安装完成后重启,打开 Docker Desktop,等待图示由橙色变绿色

macOS 安装:

  1. 去同一个页面,根据你的晶片选择 Intel 版或 Apple Silicon(M1/M2/M3)版
  2. 下载 .dmg 文件,拖入 Applications 资料夹
  3. 打开 Docker Desktop,菜单栏会出现 Docker 图示
  4. 首次启动需要输入系统密码授权

验证安装成功:
打开 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,部署到云端非常简单。以 ZeaburRailway 为例:

部署到 Zeabur:

  1. 把代码(包括 Dockerfile)push 到 GitHub
  2. zeabur.com,建立新 Project
  3. 选「Deploy from GitHub」,授权并选择你的 Repository
  4. Zeabur 会自动侦测 Dockerfile,建立并部署
  5. 部署完成后,得到一个 .zeabur.app 域名

环境变数设定:
喺 Zeabur 或 Railway 的 Dashboard 设定 Environment Variables,唔好把敏感资讯(API Key、DB 密码)写喺代码入面。Dockerfile 用 ENV 只设定预设值,真实值从平台 Dashboard 注入。

Railway 部署步骤类似:

  1. railway.app,连接 GitHub
  2. 选 Repository,Railway 自动侦测 Dockerfile 并部署
  3. 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/)可以大幅提升速度。

正文完
 0
bdspAdmin
版权声明:本站原创文章,由 bdspAdmin 于2026-07-16发表,共计3774字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)