一、Docker基础命令精讲
Docker作为目前最流行的容器化技术,其命令体系是掌握容器技术的基石。常用命令包括:
镜像管理:
- docker pull <image> 从仓库拉取镜像
- docker images 查看本地镜像列表
- docker rmi <image> 删除本地镜像
容器操作:
- docker run [options] <image> 创建并启动容器
- docker ps [-a] 查看运行中(或所有)容器
- docker start/stop/restart <container> 启停容器
- docker exec -it <container> /bin/bash 进入容器终端
- docker rm <container> 删除容器
二、Dockerfile编写与实践
Dockerfile是构建镜像的蓝图,关键指令包括:
FROM指定基础镜像RUN执行命令COPY/ADD复制文件WORKDIR设置工作目录EXPOSE声明端口CMD/ENTRYPOINT容器启动命令
示例Dockerfile:`dockerfile
FROM alpine:latest
RUN apk add --no-cache nginx
COPY nginx.conf /etc/nginx/
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]`
三、生产环境部署策略
- 网络配置:使用自定义网络
docker network create实现容器隔离与通信 - 资源限制:通过
--memory、--cpus参数限制容器资源使用 - 健康检查:在Dockerfile中添加
HEALTHCHECK指令 - 日志管理:配置日志驱动和轮转策略
四、容器数据卷与数据持久化
数据卷类型:
1. 绑定挂载:-v /host/path:/container/path
2. 命名卷:-v volume_name:/container/path
3. 匿名卷:-v /container/path
最佳实践:
- 关键数据必须使用数据卷持久化
- 配置文件推荐使用绑定挂载
- 数据库数据使用命名卷管理
五、备份与迁移方案
镜像备份:`bash
docker save -o backup.tar image:tag
docker load -i backup.tar`
数据卷备份:`bash
docker run --rm -v volume_name:/data -v $(pwd):/backup \
alpine tar czf /backup/backup.tar.gz /data`
完整迁移流程:
1. 导出镜像和数据卷
2. 在新的Docker环境中导入
3. 使用相同配置启动容器
六、服务编排与Docker Compose
通过docker-compose.yml定义多容器应用:`yaml
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
db:
image: mysql:8.0
environment:
MYSQLROOTPASSWORD: password
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:`
启动服务:docker-compose up -d
七、私有仓库搭建与管理
搭建私有Registry:`bash
docker run -d -p 5000:5000 --name registry \
-v /data/registry:/var/lib/registry registry:2`
镜像推送与拉取:`bash
docker tag local-image localhost:5000/myimagedocker
push localhost:5000/myimage`
安全配置:
- 启用TLS证书
- 配置HTTP基本认证
- 设置访问控制策略
八、数据处理服务容器化实践
数据库容器化示例:`bash
docker run -d --name mysql \
-e MYSQLROOTPASSWORD=secret \
-v mysql_data:/var/lib/mysql \
-p 3306:3306 mysql:8.0`
数据处理流水线:
1. 数据采集容器:运行Python爬虫或日志收集器
2. 处理容器:运行Spark或Pandas数据处理任务
3. 存储容器:MySQL/PostgreSQL/Redis
4. 可视化容器:Grafana或自定义Web界面
批处理任务调度:
使用 docker run --rm 运行一次性处理任务,结合cron实现定时调度。
九、安全最佳实践
- 最小化镜像:使用Alpine基础镜像
- 非root运行:使用
USER指令 - 漏洞扫描:定期扫描镜像安全漏洞
- 密钥管理:使用Docker Secrets或外部密钥管理服务
十、监控与运维
监控方案:
- Docker原生命令:docker stats
- cAdvisor + Prometheus + Grafana
- 商业方案:Datadog, New Relic
日志收集:
- ELK/EFK栈
- 使用Fluentd日志驱动
通过系统学习以上内容,您将能够掌握Docker在生产环境中的全链路应用,从开发测试到部署运维,构建高效可靠的容器化服务体系。