Docker核心操作围绕四大关键维度展开镜像管理实现应用标准化封装与迁移,容器生命周期控制涵盖启动、调试、状态监控与日志追踪全流程,数据持久化通过卷与目录挂载保障存储可靠性,网络架构配置支持端口暴露与容器间安全通信。实战核心在于掌握容器化组件的动态管理能力,包括资源限制设置、健康检查机制及故障自愈策略,结合日志诊断与环境检测技术快速定位异常。通过统一的操作接口实现开发至生产环境的一致性管控,最终构建轻量化、高弹性、可观测的容器化服务体系。
Docker核心操作实战手册
- Docker日常命令和使用的场景
# ========== 镜像管理 ==========
# 1. 拉取镜像(官方仓库/私有仓库)
docker pull nginx:alpine # 拉取轻量版Nginx
docker pull registry.example.com/my-app:v1 # 私有仓库镜像
# 2. 查看与清理镜像
docker images # 列出本地镜像(含TAG/ID/大小)
docker rmi $(docker images -q -f dangling=true) # 删除所有悬空镜像
docker image prune -a # 清理未被容器引用的镜像
# 3. 镜像导出/导入(离线迁移)
docker save -o nginx.tar nginx:alpine # 导出为tar包
docker load -i nginx.tar # 从tar包导入镜像
# ========== 容器生命周期 ==========
# 1. 启停容器(后台/交互模式)
docker run -d --name web -p 8080:80 nginx:alpine # 后台运行并暴露端口
docker run -it --rm ubuntu:22.04 /bin/bash # 启动临时交互容器(退出自动删除)
# 2. 容器状态管理
docker ps -a # 查看所有容器(含停止状态)
docker stop web # 优雅停止容器(发送SIGTERM)
docker restart web # 重启容器
docker rm -f web # 强制删除运行中容器
# 3. 进入容器与调试
docker exec -it web /bin/sh # 进入Alpine容器Shell
docker logs -f --tail 100 web # 实时查看最后100行日志
docker inspect web | grep IPAddress # 查看容器IP
# ========== 数据持久化 ==========
# 1. 挂载主机目录(开发调试常用)
docker run -v /host/data:/app/data nginx # 将主机目录映射到容器
# 2. 数据卷管理(生产环境推荐)
docker volume create app_data # 创建持久化卷
docker run -v app_data:/db_data postgres:15 # 挂载卷到容器
# 3. 查看卷信息
docker volume ls # 列出所有数据卷
docker inspect -f '{{ .Mounts }}' my-db # 查看容器挂载点
# ========== 网络管理 ==========
# 1. 容器端口映射
docker run -p 8080:80 -p 3306:3306 my-app # 多端口映射
# 2. 容器间通信(自定义网络)
docker network create my_net
docker run -d --net=my_net --name app1 my-app
docker run -d --net=my_net --name app2 my-app
# 在app1中直接ping app2(DNS自动解析)
# ========== 高阶技巧 ==========
# 1. 资源限制(防容器资源耗尽)
docker run -d --memory=500m --cpus=1.5 my-app # 限制内存和CPU
# 2. 容器健康检查
docker run --health-cmd="curl -f http://localhost || exit 1" \
--health-interval=30s \
--health-retries=3 \
nginx
# 3. 查看容器资源占用
docker stats web # 实时监控CPU/内存/网络
实战场景速查表
需求 | 命令示例 | 关键参数 |
---|---|---|
调试容器启动失败 | docker logs -f web |
-f (实时日志) |
批量清理停止的容器 | docker container prune |
无确认强制清理 |
复制文件到容器 | docker cp file.txt web:/app/ |
支持容器→主机双向复制 |
导出容器为镜像 | docker commit web my-app:v1 |
慎用(推荐Dockerfile构建) |
查看容器进程树 | docker top web |
类似Linux top 命令 |
设置容器自启动 | docker run --restart=always my-app |
--restart (异常退出策略) |
故障排查三板斧
-
日志定位:
docker logs -f --since 5m web
(查看最近5分钟日志) -
进入诊断:
docker exec -it web sh -c "curl localhost:8080"
(容器内执行命令) -
环境检查:
docker inspect web | grep -A 10 "Env"
(查看容器环境变量)
最佳实践:
- 生产环境必加
--restart=unless-stopped
保障服务自愈- 优先使用
docker compose
管理多容器应用- 敏感数据用
--env-file
注入而非命令行
掌握以上操作,可解决90%的Docker日常管理需求!接下来可进阶学习Dockerfile优化与Compose编排。
评论区