Docker全面学习指南
2025最新版
文章目录
一、Docker概述
1.1 容器技术演进
- 虚拟化技术发展:物理机 → 虚拟机 → 容器
- LXC(Linux Containers)技术基础
- Docker诞生背景(2013年DotCloud公司开源)
1.2 Docker核心组件
+-------------------+
| Docker Client |
+-------------------+
|
v
+-------------------+
| Docker Daemon |
+-------------------+
|
v
+-------------------+
| Containers | +-------------------+
| (运行时实例) |<---| Images |
+-------------------+ | (只读模板) |
+-------------------+
1.3 Docker技术优势
- 环境一致性保证
- 资源利用率提升(对比虚拟机)
- 秒级启动/停止
- 微服务架构最佳伴侣
- DevOps流水线核心组件
二、Docker环境搭建
2.1 主流平台安装
# Linux(Ubuntu示例)
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
# Windows
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
Install-Module DockerMsftProvider -Force
Install-Package Docker -ProviderName DockerMsftProvider
# macOS
brew install --cask docker
2.2 配置验证
docker --version # 版本验证
docker run hello-world # 运行测试容器
docker info # 系统信息查看
2.3 国内加速配置
// /etc/docker/daemon.json
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"https://docker.mirrors.ustc.edu.cn"
],
"insecure-registries": [],
"experimental": false
}
三、Docker核心操作
3.1 镜像管理
docker search nginx # 搜索镜像
docker pull nginx:1.23 # 拉取指定版本
docker image ls # 列出本地镜像
docker image prune # 清理无用镜像
3.2 容器生命周期
docker run -d -p 80:80 --name web nginx # 启动容器
docker exec -it web bash # 进入容器
docker stop web # 停止容器
docker start web # 启动已停止容器
docker rm -f web # 强制删除容器
3.3 数据持久化
# 卷管理
docker volume create myvol
docker run -v myvol:/data ...
# 绑定挂载
docker run -v /host/path:/container/path ...
四、Dockerfile深度解析
4.1 最佳实践模板
# 阶段1:构建环境
FROM node:18-alpine as builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
# 阶段2:生产环境
FROM nginx:1.23-alpine
COPY --from=builder /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
4.2 高级优化技巧
- 多阶段构建减少镜像体积
- 使用.dockerignore文件
- 镜像层合并优化
- 安全扫描工具集成
docker scan <image-name> # 安全扫描
五、Docker网络架构
5.1 网络模式对比
模式 | 说明 | 适用场景 |
---|---|---|
bridge | 默认NAT网络(docker0) | 单主机容器通信 |
host | 共享主机网络栈 | 高性能网络需求 |
overlay | 跨主机容器网络 | Swarm集群 |
macvlan | 直接分配MAC地址 | 传统网络集成 |
5.2 自定义网络
docker network create --driver bridge mynet
docker run --network=mynet ...
六、Docker Compose
6.1 编排文件示例
version: '3.8'
services:
web:
image: nginx:1.23
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
networks:
- frontend
db:
image: postgres:15
environment:
POSTGRES_PASSWORD: example
volumes:
- pgdata:/var/lib/postgresql/data
networks:
- backend
volumes:
pgdata:
networks:
frontend:
backend:
6.2 常用命令
docker compose up -d # 启动服务
docker compose down -v # 停止并清理
docker compose logs -f # 实时日志查看
七、容器安全与优化
7.1 安全实践
- 非root用户运行容器
USER 1000:1000
- 只读文件系统
docker run --read-only ...
- 资源限制
docker run -m 512m --cpus 1.5 ...
7.2 性能监控
docker stats # 实时资源监控
docker top <container> # 进程查看
docker system df # 磁盘使用统计
八、生产环境实践
8.1 CI/CD集成
# GitHub Actions示例
name: Build and Push
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Build Docker image
run: docker build -t myapp:${{ github.sha }} .
- name: Push to Registry
run: |
echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin
docker push myapp:${{ github.sha }}
8.2 云平台集成
- AWS ECS/EKS
- Azure ACI
- Google Cloud Run
- 阿里云ACK
九、学习路线建议
-
基础阶段(1周):
- 容器基本操作
- Dockerfile编写
- 单机容器管理
-
进阶阶段(2周):
- 网络与存储配置
- Docker Compose编排
- 镜像优化技巧
-
高级阶段(3周+):
- 容器安全加固
- Kubernetes集成
- 服务网格(Service Mesh)
- 云原生架构设计
十、学习资源推荐
- 官方文档:https://docs.docker.com/
- 实践平台:Play with Docker(https://labs.play-with-docker.com/)
- 认证体系:Docker Certified Associate(DCA)
- 经典书籍:
- 《Docker Deep Dive》(最新第3版)
- 《Kubernetes in Action》
本指南持续更新,建议配合实际操作练习。建议学习路径:先掌握单机容器操作 → 学习Docker Compose → 深入Dockerfile优化 → 最后研究容器编排和云原生架构。