找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1622

积分

0

好友

232

主题
发表于 3 天前 | 查看: 9| 回复: 0

图片

Docker已成为现代软件开发和运维的核心工具,无论是部署微服务、构建CI/CD流水线,还是进行线上问题排查,熟练使用Docker命令都是必备技能。

本文将系统梳理从基础到进阶的常用Docker命令,涵盖镜像、容器、网络、数据卷及系统管理等方面。内容基于Docker最新稳定版本,旨在为日常开发与运维工作提供一份高效的速查指南。

图片

1. 环境与信息查询命令

这些命令用于检查Docker服务状态与系统资源占用,是日常运维的“第一道检查”。

命令 主要功能说明
docker version 查看Docker客户端与服务端的版本信息
docker info 显示详细的Docker系统信息,包括驱动、镜像数等
docker system df 查看Docker的磁盘使用情况(镜像、容器、卷等)

典型应用场景:

  • 服务器磁盘告警:首先执行 docker system df -v,查看具体是镜像、容器还是数据卷占用了大量空间。
  • 新环境验证:安装Docker后,使用 docker versiondocker info 确认版本正确且存储驱动为推荐的overlay2

2. 镜像管理命令

镜像作为容器的基础,其拉取、构建、推送和清理是高频操作。

命令 主要功能说明
docker search 在Docker Hub或私有仓库中搜索镜像
docker pull 从仓库拉取(下载)指定镜像
docker images 列出本地已下载的镜像
docker build 依据Dockerfile构建新的镜像
docker rmi 删除一个或多个本地镜像
docker tag 为镜像创建一个新的标签(常用于推送前)
docker push 将镜像推送至远程仓库
docker save / load 将镜像导出/导入为tar归档文件(用于离线迁移)
docker history 查看镜像的构建历史(各层信息)
docker inspect 获取镜像的底层详细信息

典型应用场景:

  • 生产环境版本更新docker build -t myapp:v2.1 .docker tag myapp:v2.1 registry.com/myapp:v2.1docker push registry.com/myapp:v2.1
  • 镜像瘦身分析:通过 docker history myapp:v2.1 找出导致镜像体积过大的构建层,进而优化Dockerfile。
  • 离线环境部署:在可联网环境执行 docker save -o myapp.tar myapp:v2.1,在离线环境通过 docker load -i myapp.tar 导入。

3. 容器生命周期管理命令

涉及容器的创建、启动、停止与删除,是操作容器的核心命令集。

命令 主要功能说明
docker run 创建并启动一个新容器(最常用)
docker create 仅创建容器但不启动
docker start / stop / restart 启动/停止/重启一个或多个容器
docker kill 强制终止容器进程(stop无效时使用)
docker rm 删除一个或多个(已停止的)容器
docker pause / unpause 暂停/恢复容器内的所有进程

典型应用场景:

  • 快速启动Web服务docker run -d --name web -p 80:80 --restart=always nginx:1.25
  • 服务异常处理:先尝试 docker stop web 优雅停止;若无效,使用 docker kill web 强制终止;最后 docker rm web 清理容器后重新启动。
  • 批量操作容器:重启所有运行中的容器:docker restart $(docker ps -q)

4. 容器运维与调试命令

这些命令用于容器运行时的状态查看、日志排查和交互调试,占据了日常运维的大部分时间。

命令 主要功能说明
docker ps 列出容器(默认仅运行中,加 -a 显示所有)
docker exec 在正在运行的容器中执行命令
docker logs 获取容器的日志输出
docker top 查看容器内运行的进程信息
docker stats 实时显示所有容器的资源使用统计(CPU、内存等)
docker inspect 获取容器的底层详细信息(配置、网络、状态等)
docker cp 在宿主机和容器之间拷贝文件或目录
docker attach 附加到容器的前台标准输入/输出(慎用,退出可能导致容器停止)
docker commit 基于当前容器状态创建一个新的镜像(通常用于调试,不推荐用于构建)
docker export / import 导出容器的文件系统为tar包 / 将tar包导入为镜像

典型应用场景:

  • 进入容器调试docker exec -it web bash(或 /bin/sh
  • 排查应用日志docker logs -f --tail=200 web 实时跟踪并只显示最后200行日志。
  • 定位资源瓶颈docker stats 快速查看哪个容器CPU或内存异常,然后 docker top <容器名> 深入查看其内部进程。
  • 紧急备份配置docker cp web:/app/config.yaml ./backup.yaml 将容器内配置文件拷贝至宿主机。

5. 网络管理命令

在微服务架构中,合理的网络规划与管理是实现服务发现和隔离的关键。

命令 主要功能说明
docker network ls 列出所有Docker网络
docker network create 创建一个新的自定义网络
docker network inspect 查看指定网络的详细信息(如连接的容器、子网)
docker network connect 将某个已运行的容器连接到指定网络

典型应用场景:

  • 创建服务专用网络docker network create mynet
  • 在自定义网络中启动服务docker run -d --name app1 --network mynet myapp:latest
  • 为现有容器添加网络docker network connect mynet app2,此后app1app2即可直接通过容器名app1app2相互通信,这正是微服务、搞CI/CD等场景中服务发现的常见做法。

6. 数据卷管理命令

数据卷(Volume)用于持久化容器产生的数据,是运行数据库等有状态服务的基石。

命令 主要功能说明
docker volume ls 列出所有数据卷
docker volume create 创建一个具名数据卷
docker volume prune 删除所有未被任何容器引用的数据卷

典型应用场景:

  • 运行MySQL数据库docker run -d --name mysql -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123 mysql:8
  • 数据卷备份:直接备份宿主机上Docker管理的卷目录;或使用临时容器进行打包:docker run --rm -v mysql-data:/data -v $(pwd):/backup ubuntu tar cvf /backup/mysql.tar /data

7. 系统清理命令

Docker运行会逐渐占用磁盘空间,定期清理是维持系统健康的重要环节。

命令 主要功能说明
docker system prune 一键清理未被使用的镜像、容器、网络和构建缓存
docker image prune 专门清理悬挂镜像(<none>:<none>
docker container prune 清理所有已停止的容器
docker volume prune 清理所有未被使用的数据卷

典型应用场景:

  • 磁盘空间告急:先执行 docker system prune 进行基础清理。若需更彻底,可使用 docker system prune -a --volumes注意:此命令会删除所有未被使用的镜像和卷,操作前请确认)。
  • 设置定期清理任务:在crontab中添加任务,每周自动执行 docker system prune -f --volumes

8. 其他高级实用命令

这些命令使用频率相对较低,但在特定场景下非常有效。

命令 主要功能说明
docker events 实时获取Docker守护进程产生的事件流(如容器创建、销毁、OOM等)
docker update 动态更新运行中容器的配置(如CPU/内存限制)

典型应用场景:

  • 临时调整容器资源:发现某个容器CPU占用过高,可临时限制其使用核心数:docker update --cpus=2 web
  • 事件监控与审计:通过 docker events --since '2025-12-01' 查看指定时间后的Docker事件,辅助排查复杂问题。

图片

熟练掌握以上命令,能显著提升容器化应用的开发与运维效率。随着云原生技术的普及,Docker作为基石工具,其重要性将愈发凸显。建议结合实际操作,将这份指南作为日常工作的速查手册。




上一篇:My-WPF框架深度解析:基于WPF与MVVM的上位机应用开发实战
下一篇:程序员职业规划124法则:精通Java技术栈与跨越技术管理岗位
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-24 21:10 , Processed in 0.284767 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表