Docker 基础详解
Docker 是一个开源的容器平台,能够将应用及其依赖打包成轻量级容器,实现跨环境运行与高效部署。
🚀 什么是 Docker?
Docker 提供操作系统级虚拟化,与传统虚拟机相比:
| 特性 | Docker 容器 | 虚拟机 | 
|---|---|---|
| 启动速度 | 秒级 | 分钟级 | 
| 占用体积 | MB 级 | GB 级 | 
| 隔离方式 | 内核级别 | 硬件级 | 
| 启动方式 | 直接运行镜像 | 启动完整系统 | 
🧱 核心概念
| 概念 | 描述 | 
|---|---|
| 镜像(Image) | 类似操作系统快照,用于创建容器 | 
| 容器(Container) | 镜像的运行实例,轻量、隔离 | 
| Dockerfile | 用于构建镜像的脚本 | 
| Volume | 数据持久化机制 | 
| 网络(Network) | 容器之间或与主机通信方式 | 
| Registry | 镜像仓库(如 Docker Hub、Harbor) | 
🧪 基本命令演示
# 查看版本
docker version
# 拉取镜像
docker pull nginx
# 运行容器并映射端口
docker run -d -p 8080:80 nginx
# 查看容器
docker ps -a
# 停止容器
docker stop <id>
# 删除容器
docker rm <id>
🧩 Dockerfile 示例
# 基础镜像
FROM node:18
# 设置工作目录
WORKDIR /app
# 拷贝依赖并安装
COPY package*.json ./
RUN npm install
# 拷贝代码
COPY . .
# 启动命令
CMD ["npm", "start"]
💾 数据卷 Volume
# 本地挂载示例
docker run -v /home/user/data:/data alpine
# 匿名卷
docker run -v /data alpine
# 指定卷名
docker volume create my-data
docker run -v my-data:/data alpine
🧰 Docker Compose 示例
version: "3"
services:
  web:
    image: nginx
    ports:
      - "80:80"
  backend:
    build: ./backend
    ports:
      - "3000:3000"
docker-compose up -d
🧠 常见网络模式
| 网络模式 | 说明 | 
|---|---|
| bridge(默认) | 虚拟网桥,容器之间通信 | 
| host | 与宿主机共用网络 | 
| none | 无网络连接 | 
| overlay | 跨主机通信(Swarm/K8s) | 
🔐 Docker Tips
- Tips
 - Caution
 - Info
 
tip
推荐使用多阶段构建减少镜像体积,提高构建效率。
caution
切勿在生产环境使用 root 用户运行容器,注意安全性配置。
info
Dockerfile 改动尽量靠下放置可变内容,提高缓存命中率。
🔐 安全与权限实践
- 最佳实践
 - 扫描工具
 
tip
- 使用非 root 用户构建镜像
 - 限制容器功能:
--cap-drop - 配置 seccomp/apparmor 规则
 
docker scan myimage:latest
Docker Hub 支持内置安全漏洞扫描
⚙️ Docker + CI/CD 示例(GitHub Actions)
- name: Build & Push
  uses: docker/build-push-action@v5
  with:
    context: .
    push: true
    tags: myrepo/myapp:latest
适合部署到 Docker Hub、Harbor 等仓库。
🧪 在线练习平台推荐
| 平台 | 描述 | 
|---|---|
| Play with Docker | 官方免费沙箱,支持真实终端练习 | 
| Katacoda Docker Scenarios | 交互式课程式训练平台 | 
| KodeKloud Docker Labs | 面向初学者的动手实验 | 
| ACloudGuru Docker Lab | 提供付费的实战环境 | 
| Docker Playground | 类似 sandbox 的交互体验 | 
🧠 推荐学习路线
1. 基础阶段
- 安装 Docker Desktop / Engine
 - 了解镜像与容器
 - 学会使用 Volume 和 Port 映射
 
2. 实战阶段
- 编写 Dockerfile 构建 Node/Python 项目
 - 使用 
docker-compose管理前后端服务 - 持久化日志、数据库文件
 
3. 进阶阶段
- 镜像瘦身、多阶段构建
 - 安全配置、镜像扫描
 - 构建流水线 CI/CD(GitHub Actions, GitLab CI)
 
4. 运维部署阶段
- 使用 Harbor 搭建私有仓库
 - 与 Kubernetes 协同部署
 - 使用 Prometheus + Grafana 监控容器状态