Docker使用手册:从入门到精通的完整指南
2025.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万官方和社区镜像
典型工作流程示例:
# 用户通过CLI发送pull指令
docker pull nginx:latest
# CLI将请求转发至Daemon
# Daemon从Docker Hub下载镜像
# 存储至本地/var/lib/docker目录
二、环境搭建与基础配置
2.1 安装部署方案
Linux系统安装
# Ubuntu示例
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER # 添加用户组
newgrp docker # 刷新组权限
Windows/macOS安装
推荐使用Docker Desktop,支持Kubernetes集成和GPU加速。安装后需在设置中配置:
- 共享驱动器(Windows)
- 资源限制(建议4核8GB内存)
- 网络模式(桥接/NAT)
2.2 基础配置优化
生产环境建议修改/etc/docker/daemon.json
:
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"storage-driver": "overlay2",
"exec-opts": ["native.cgroupdriver=systemd"]
}
配置后需执行sudo systemctl restart docker
生效。
三、镜像管理全流程
3.1 镜像构建实战
Dockerfile最佳实践
# 多阶段构建示例
FROM golang:1.21 as builder
WORKDIR /app
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -o /service
FROM alpine:latest
COPY --from=builder /service /service
EXPOSE 8080
CMD ["/service"]
构建命令:
docker build -t myapp:v1 . --no-cache
镜像分层原理
每个指令生成一个镜像层,联合文件系统(UnionFS)将各层叠加呈现。使用.dockerignore
文件可排除构建上下文中的无关文件,减少构建时间。
3.2 镜像仓库管理
私有仓库搭建
docker run -d -p 5000:5000 --restart=always --name registry \
-v /mnt/registry:/var/lib/registry \
registry:2
推送镜像需标记:
docker tag myapp:v1 localhost:5000/myapp:v1
docker push localhost:5000/myapp:v1
安全扫描
使用docker scan
命令检测漏洞:
docker scan nginx:latest
# 输出示例:
# ✗ Medium severity vulnerability found in nginx
# Description: CVE-2023-XXXX
# Solution: upgrade to 1.25.3
四、容器生命周期管理
4.1 容器运行控制
常用启动参数
docker run -d \
--name web \
-p 80:8080 \
-v /data:/app/data \
--restart=on-failure:5 \
myapp:v1
关键参数说明:
-d
:后台运行-p
:端口映射(宿主:容器)-v
:数据卷挂载--restart
:重启策略
资源限制
docker run --memory="512m" --cpus="1.5" myapp:v1
4.2 容器编排进阶
Docker Compose示例
version: '3.8'
services:
web:
image: myapp:v1
ports:
- "80:8080"
depends_on:
- redis
redis:
image: redis:7-alpine
volumes:
- redis_data:/data
volumes:
redis_data:
启动命令:
docker compose up -d
健康检查配置
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
interval: 30s
timeout: 10s
retries: 3
五、网络与存储管理
5.1 网络模式详解
自定义网络创建
docker network create --driver bridge --subnet 172.28.0.0/16 mynet
容器间通信示例:
docker run -d --name db --network mynet postgres:15
docker run -d --name app --network mynet -e DB_HOST=db myapp:v1
网络诊断工具
docker network inspect mynet # 查看网络详情
docker exec -it app ping db # 测试连通性
5.2 存储方案选择
存储驱动 | 适用场景 | 性能特点 |
---|---|---|
overlay2 | 默认选择 | 平衡性能与稳定性 |
devicemapper | 直接LVM | 企业级存储 |
btrfs | 高级功能 | 支持快照 |
持久化存储示例
# 创建数据卷
docker volume create app_data
# 使用数据卷
docker run -v app_data:/app/data myapp:v1
六、安全加固最佳实践
6.1 镜像安全策略
- 仅使用官方基础镜像
- 定期更新基础镜像
- 使用
docker history
检查镜像层 - 最小化镜像内容(移除调试工具)
6.2 运行时安全
安全配置示例
docker run --cap-drop=ALL --cap-add=NET_BIND_SERVICE \
--security-opt no-new-privileges \
myapp:v1
漏洞扫描流程
- 定期执行
docker scan
- 关注高危漏洞(CVSS评分>7.0)
- 验证修复方案
- 重建并测试镜像
七、性能调优技巧
7.1 构建优化
- 使用
.dockerignore
减少上下文 - 合并RUN指令减少层数
- 优先使用官方镜像
- 启用BuildKit(
DOCKER_BUILDKIT=1
)
7.2 运行优化
- 合理设置资源限制
- 启用日志驱动(
--log-driver=json-file
) - 调整内核参数(
vm.max_map_count=262144
)
八、故障排查指南
8.1 常见问题处理
容器无法启动
- 检查日志:
docker logs <container>
- 验证端口冲突:
netstat -tulnp | grep <port>
- 检查资源限制:
docker stats
网络连接问题
- 测试容器内网络:
docker exec -it <container> ping 8.8.8.8
- 检查防火墙规则:
iptables -L
- 验证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等社区活动保持技术更新。
发表评论
登录后可评论,请前往 登录 或 注册