logo

Docker使用手册:从入门到精通的完整指南

作者:c4t2025.09.17 10:30浏览量:0

简介:本文为开发者提供Docker全流程操作指南,涵盖安装配置、镜像管理、容器编排等核心场景,通过实战案例解析容器化技术原理与最佳实践。

一、Docker基础概念解析

1.1 容器化技术原理

Docker采用Linux内核的cgroups和namespaces技术实现资源隔离,每个容器拥有独立的文件系统、网络空间和进程树。与虚拟机相比,容器直接运行在宿主内核上,无需模拟硬件层,启动速度可达秒级,资源占用减少80%以上。

1.2 核心组件架构

Docker架构包含三大核心组件:

  • Docker Daemon:后台服务进程,负责镜像构建、容器管理
  • Docker CLI:命令行工具,通过REST API与Daemon通信
  • Docker Hub:官方镜像仓库,存储超过150万官方和社区镜像

典型工作流程示例:

  1. # 用户通过CLI发送pull指令
  2. docker pull nginx:latest
  3. # CLI将请求转发至Daemon
  4. # Daemon从Docker Hub下载镜像
  5. # 存储至本地/var/lib/docker目录

二、环境搭建与基础配置

2.1 安装部署方案

Linux系统安装

  1. # Ubuntu示例
  2. curl -fsSL https://get.docker.com | sh
  3. sudo usermod -aG docker $USER # 添加用户组
  4. newgrp docker # 刷新组权限

Windows/macOS安装

推荐使用Docker Desktop,支持Kubernetes集成和GPU加速。安装后需在设置中配置:

  • 共享驱动器(Windows)
  • 资源限制(建议4核8GB内存)
  • 网络模式(桥接/NAT)

2.2 基础配置优化

生产环境建议修改/etc/docker/daemon.json

  1. {
  2. "registry-mirrors": ["https://registry.docker-cn.com"],
  3. "storage-driver": "overlay2",
  4. "exec-opts": ["native.cgroupdriver=systemd"]
  5. }

配置后需执行sudo systemctl restart docker生效。

三、镜像管理全流程

3.1 镜像构建实战

Dockerfile最佳实践

  1. # 多阶段构建示例
  2. FROM golang:1.21 as builder
  3. WORKDIR /app
  4. COPY . .
  5. RUN CGO_ENABLED=0 GOOS=linux go build -o /service
  6. FROM alpine:latest
  7. COPY --from=builder /service /service
  8. EXPOSE 8080
  9. CMD ["/service"]

构建命令:

  1. docker build -t myapp:v1 . --no-cache

镜像分层原理

每个指令生成一个镜像层,联合文件系统(UnionFS)将各层叠加呈现。使用.dockerignore文件可排除构建上下文中的无关文件,减少构建时间。

3.2 镜像仓库管理

私有仓库搭建

  1. docker run -d -p 5000:5000 --restart=always --name registry \
  2. -v /mnt/registry:/var/lib/registry \
  3. registry:2

推送镜像需标记:

  1. docker tag myapp:v1 localhost:5000/myapp:v1
  2. docker push localhost:5000/myapp:v1

安全扫描

使用docker scan命令检测漏洞:

  1. docker scan nginx:latest
  2. # 输出示例:
  3. # ✗ Medium severity vulnerability found in nginx
  4. # Description: CVE-2023-XXXX
  5. # Solution: upgrade to 1.25.3

四、容器生命周期管理

4.1 容器运行控制

常用启动参数

  1. docker run -d \
  2. --name web \
  3. -p 80:8080 \
  4. -v /data:/app/data \
  5. --restart=on-failure:5 \
  6. myapp:v1

关键参数说明:

  • -d:后台运行
  • -p:端口映射(宿主:容器)
  • -v:数据卷挂载
  • --restart:重启策略

资源限制

  1. docker run --memory="512m" --cpus="1.5" myapp:v1

4.2 容器编排进阶

Docker Compose示例

  1. version: '3.8'
  2. services:
  3. web:
  4. image: myapp:v1
  5. ports:
  6. - "80:8080"
  7. depends_on:
  8. - redis
  9. redis:
  10. image: redis:7-alpine
  11. volumes:
  12. - redis_data:/data
  13. volumes:
  14. redis_data:

启动命令:

  1. docker compose up -d

健康检查配置

  1. healthcheck:
  2. test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
  3. interval: 30s
  4. timeout: 10s
  5. retries: 3

五、网络与存储管理

5.1 网络模式详解

自定义网络创建

  1. docker network create --driver bridge --subnet 172.28.0.0/16 mynet

容器间通信示例:

  1. docker run -d --name db --network mynet postgres:15
  2. docker run -d --name app --network mynet -e DB_HOST=db myapp:v1

网络诊断工具

  1. docker network inspect mynet # 查看网络详情
  2. docker exec -it app ping db # 测试连通性

5.2 存储方案选择

存储驱动 适用场景 性能特点
overlay2 默认选择 平衡性能与稳定性
devicemapper 直接LVM 企业级存储
btrfs 高级功能 支持快照

持久化存储示例

  1. # 创建数据卷
  2. docker volume create app_data
  3. # 使用数据卷
  4. docker run -v app_data:/app/data myapp:v1

六、安全加固最佳实践

6.1 镜像安全策略

  • 仅使用官方基础镜像
  • 定期更新基础镜像
  • 使用docker history检查镜像层
  • 最小化镜像内容(移除调试工具)

6.2 运行时安全

安全配置示例

  1. docker run --cap-drop=ALL --cap-add=NET_BIND_SERVICE \
  2. --security-opt no-new-privileges \
  3. myapp:v1

漏洞扫描流程

  1. 定期执行docker scan
  2. 关注高危漏洞(CVSS评分>7.0)
  3. 验证修复方案
  4. 重建并测试镜像

七、性能调优技巧

7.1 构建优化

  • 使用.dockerignore减少上下文
  • 合并RUN指令减少层数
  • 优先使用官方镜像
  • 启用BuildKit(DOCKER_BUILDKIT=1

7.2 运行优化

  • 合理设置资源限制
  • 启用日志驱动(--log-driver=json-file
  • 调整内核参数(vm.max_map_count=262144

八、故障排查指南

8.1 常见问题处理

容器无法启动

  1. 检查日志:docker logs <container>
  2. 验证端口冲突:netstat -tulnp | grep <port>
  3. 检查资源限制:docker stats

网络连接问题

  1. 测试容器内网络:docker exec -it <container> ping 8.8.8.8
  2. 检查防火墙规则:iptables -L
  3. 验证DNS解析:docker exec -it <container> cat /etc/resolv.conf

8.2 高级诊断工具

  • docker system df:查看磁盘使用
  • docker inspect <container>:获取详细配置
  • strace -f docker run <image>:跟踪系统调用

本手册系统梳理了Docker从基础安装到高级运维的全流程知识,通过20+个实战案例和30+条操作指令,帮助开发者快速掌握容器化技术核心要点。建议结合官方文档(docs.docker.com)持续学习,定期参加DockerCon等社区活动保持技术更新。

相关文章推荐

发表评论