Banner

Docker 快速上手教程

2026-10-14

Docker 快速上手建议按"装好 → 跑通 hello-world → 跑一个 Nginx → 写 Dockerfile → 用 Compose 编排"这条主线,20 分钟就能跑通完整流程。

1. 安装 Docker

macOS(你当前环境)

# 方式一:Homebrew(推荐)
brew install --cask docker

# 方式二:手动安装
# 去 docker.com/products/docker-desktop 下载 Apple Silicon 版本,拖入 Applications

启动 Docker Desktop,等状态栏鲸鱼图标变绿即可。验证:

docker --version
docker run hello-world

看到 Hello from Docker! 即成功。

Windows

# 管理员 PowerShell
wsl --install
wsl --set-default-version 2

然后下载 Docker Desktop for Windows,安装时勾选 "Use WSL 2 instead of Hyper-V"。

Linux(Ubuntu)

sudo apt update
sudo apt install -y docker.io docker-compose-v2
sudo systemctl enable --now docker
sudo usermod -aG docker $USER   # 免 sudo,需重新登录

国内服务器建议配镜像加速,编辑 /etc/docker/daemon.json:

{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://docker.1ms.run"
  ]
}

2. 核心概念一句话

概念类比
镜像(Image)软件安装包 / 类
容器(Container)运行中的实例 / 对象
仓库(Registry)App Store / Docker Hub
Dockerfile安装说明书
Compose多服务编排剧本

3. 跑第一个容器:Nginx

# 拉镜像
docker pull nginx:1.27-alpine

# 后台运行,8080 映射到容器 80
docker run -d --name my-nginx -p 8080:80 nginx:1.27-alpine

# 浏览器打开 http://localhost:8080 看到 Welcome to nginx!

常用运维命令:

docker ps              # 查看运行中的容器
docker logs -f my-nginx   # 实时看日志
docker exec -it my-nginx sh  # 进入容器内部
docker stop my-nginx   # 停止
docker rm my-nginx     # 删除
docker images          # 查看本地镜像
docker system df       # 看磁盘占用
docker system prune    # 清理无用资源

4. 写一个 Dockerfile

创建项目目录 my-app/:

my-app/
├── Dockerfile
└── index.html

index.html:

<h1>Hello from my Docker image!</h1>

Dockerfile:

FROM nginx:1.27-alpine
COPY index.html /usr/share/nginx/html/index.html
EXPOSE 80

构建并运行:

cd my-app
docker build -t my-app:v1 .
docker run -d --name my-app -p 8081:80 my-app:v1

访问 http://localhost:8081 即可看到自定义页面。

Dockerfile 最佳实践:

  • 基础镜像尽量用 alpine 或 slim 减小体积
  • 多阶段构建(FROM ... AS builder → FROM ...)分离编译和运行
  • 用 .dockerignore 排除 node_modules、.git 等
  • 不要以 root 运行应用(USER appuser)

5. 数据持久化:Volume

容器删除后数据会丢失,必须用 Volume 或挂载目录:

# 挂载宿主机目录
docker run -d --name db \
  -v $(pwd)/data:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=secret \
  mysql:8.4

# 或用命名 Volume(推荐)
docker volume create mysql-data
docker run -d --name db \
  -v mysql-data:/var/lib/mysql \
  mysql:8.4

6. Docker Compose 多服务编排

docker-compose.yml:

services:
  web:
    build: .
    ports:
      - "8080:80"
    depends_on:
      - db
  db:
    image: postgres:16-alpine
    environment:
      POSTGRES_PASSWORD: secret
    volumes:
      - pgdata:/var/lib/postgresql/data

volumes:
  pgdata:

一键启动/停止:

docker compose up -d      # 后台启动所有服务
docker compose logs -f    # 看所有服务日志
docker compose down       # 停止并删除容器
docker compose down -v    # 连 Volume 一起删(谨慎!)

7. 生产环境要点

  • 锁版本:nginx:1.27-alpine 而非 nginx:latest
  • 资源限制:--memory="512m" --cpus="1.0" 防止拖垮宿主机
  • 日志轮转:在 daemon.json 中配置 log-driver: json-file + max-size
  • 健康检查:Dockerfile 中加 HEALTHCHECK,Compose 中用 healthcheck
  • 安全:敏感信息用环境变量或 secret,不要硬编码在镜像里
8