在当今云原生和微服务架构盛行的时代,Docker已成为开发者与运维工程师不可或缺的利器。它通过容器化技术,实现了应用及其依赖环境的标准化打包与隔离运行,极大地简化了部署流程,提升了开发与运维效率。然而,要真正驾驭Docker,熟练运用其命令行工具是第一步。本文将系统性地梳理Docker的核心命令,涵盖镜像、容器、仓库等关键概念,并提供实用的操作技巧与最佳实践,助你从Docker新手快速进阶为高效使用者。
一、启航:掌握基础帮助与信息获取
任何技术栈的学习都始于了解如何获取帮助。Docker命令行工具提供了完善的帮助系统,让你在遇到陌生命令时能快速上手。使用 可以列出所有Docker命令的分类概览,如管理镜像的 docker --helpimage、管理容器的 container 等。当你需要了解某个具体命令的详细用法、参数选项及示例时, 是你的最佳伙伴。例如,想深入了解如何运行容器,只需执行 具体命令 --helpdocker run --help。善用帮助命令,是摆脱死记硬背、实现自主探索的关键。
# 查看Docker整体帮助文档
docker --help
# 查看指定命令的详细用法(以cp命令为例)
docker cp --help
二、基石:镜像的高效管理与维护
镜像是Docker世界的基石,是一个轻量级、可执行的独立软件包,包含了运行某个应用所需的所有内容。高效管理镜像是容器化工作流的核心。
- 查看与搜索:使用
可以列出本地所有镜像及其详细信息(仓库、标签、ID、大小)。当需要从Docker Hub等公共仓库寻找特定软件时,# 列出本地所有镜像(默认隐藏中间层镜像) docker images # 列出本地所有镜像(包含历史映像层) docker images -a # 只显示镜像ID(常用于批量操作) docker images -q # 列出指定仓库的镜像(如只看redis镜像) docker images redis # 显示镜像的摘要信息 docker images --digests命令非常有用,它能返回相关镜像的星级、官方认证等信息,帮助你做出选择。# 搜索指定名称的镜像(如搜索redis) docker search redis # 搜索镜像并限制结果数量(如只显示前5个) docker search --limit 5 redis - 拉取与清理:选定镜像后,使用
语法将其下载到本地,例如docker pull 镜像名[:TAG]。随着时间推移,本地会积累许多不再使用的镜像和容器,占用大量磁盘空间。定期使用# 下载最新版本的镜像(不指定TAG默认latest) docker pull mysql # 下载指定版本的镜像(如redis 6.0.8) docker pull redis:6.0.8查看资源占用情况,并使用# 查看镜像、容器、数据卷的空间占用情况 docker system df或结合# 根据镜像名称删除(如删除hello-world镜像) docker rmi hello-world # 根据镜像ID删除 docker rmi feb5d9fea6a5 # 强制删除镜像 docker rmi -f 镜像ID/镜像名 # 删除多个镜像(空格分隔) docker rmi -f ubuntu:latest redis:6.0.8 # 删除所有本地镜像 docker rmi -f $(docker images -qa)与$(docker images -qa)进行批量清理至关重要。特别要注意清理那些名为-f<none>的虚悬镜像,它们通常由构建过程产生,已无用处:。# 查看所有虚悬镜像 docker images -f dangling=true # 删除所有虚悬镜像 docker image prune
三、核心:容器的全生命周期管理
容器是镜像的运行实例。管理容器的生命周期是日常工作的重点。
- 创建与运行:
是最核心的命令。通过组合不同的参数,可以灵活控制容器的行为。例如,docker run [OPTIONS] IMAGE [COMMAND] [ARG...]-d让容器后台运行,-p映射端口,-v挂载数据卷,--name指定容器名。一个典型的启动命令如:。# 交互式启动Ubuntu容器,进入bash终端 docker run -it ubuntu /bin/bash # 指定容器名启动(如命名为u1) docker run -it --name=u1 ubuntu /bin/bash # 后台启动Redis容器,指定端口映射(主机6379映射容器6379) docker run -d -p 6379:6379 --name=myredis redis:6.0.8 # 启动守护式容器(后台运行,不占用终端) docker run -d redis:6.0.8 - 状态监控与交互:使用
查看容器状态。对于后台运行的容器,需要进入其内部进行操作,可以使用# 查看正在运行的容器 docker ps # 查看所有容器(包括停止的) docker ps -a # 查看最近创建的容器(默认最近1个) docker ps -l # 查看最近创建的n个容器(如最近2个) docker ps -n 2 # 只显示容器ID docker ps -q # 查看容器详细信息(如查看u1容器详情) docker inspect u1docker exec -it(推荐,因为可以开启新终端)或docker attach(附加到原输入流)。查看容器内部进程和输出日志分别使用。# 查看容器运行日志 docker logs 容器ID/容器名 # 实时查看日志 docker logs -f 容器ID/容器名 # 查看容器内运行的进程 docker top 容器ID/容器名 - 启停与删除:使用
控制容器运行。删除容器时需注意,运行中的容器需先停止或使用# 启动已停止的容器 docker start 容器ID/容器名 # 重启容器 docker restart 容器ID/容器名 # 停止容器 docker stop 容器ID/容器名 # 强制停止容器 docker kill 容器ID/容器名-f强制删除:。# 删除已停止的容器 docker rm 容器ID/容器名 # 强制删除容器(无论是否运行) docker rm -f 容器ID/容器名 # 批量删除所有停止的容器 docker rm -f $(docker ps -a -q) # 批量删除所有容器 docker rm -f $(docker ps -qa)
| 参数 | 作用 |
|---|---|
| - -name=“容器名” | 指定容器名称(如- -name=u1),避免默认随机名称 |
| -d | 后台运行容器(守护式容器),返回容器ID |
| -it | 交互式(前台)运行容器(:交互模式,:分配伪终端) |
| -P | 随机端口映射(大写P),Docker自动分配主机端口映射到容器端口 |
| -p | 指定端口映射(小写p),格式:主机端口:容器端口(如-p 8080:80) |
| –privileged=true | 扩大容器权限(解决CentOS7中目录挂载权限问题) |
| -v | 数据卷挂载(如-v 宿主机目录:容器目录) |
四、进阶:数据管理、迁移与仓库交互
掌握基础命令后,一些进阶操作能让你应对更复杂的场景。
- 数据备份与迁移:这是容器化部署中保证数据持久性和可移植性的关键。你可以从容器内拷贝文件到主机(
),或将整个容器导出为tar包进行迁移(# 语法:docker cp 容器ID:容器内路径 主机目标路径 # 示例:将容器内/tmp/a.txt拷贝到主机/tmp目录 docker cp 608d2057e7e5:/tmp/a.txt /tmp/a.txt),再导入为镜像(# 语法:docker export 容器ID > 文件名.tar docker export 608d2057e7e5 > ubuntu.tar.gz)。对于生产环境,更推荐使用Docker Volume或绑定挂载来实现数据的持久化存储。# 语法:cat 文件名.tar | docker import - 镜像用户/镜像名:版本号 cat ubuntu.tar.gz | docker import - wen/ubuntu:1.0 - 仓库交互:Docker Hub或私有仓库是镜像的集散地。你需要登录(
docker login)、推送镜像(docker push)和拉取镜像。这对于团队协作和持续集成/持续部署(CI/CD)流程至关重要。相关命令示例如下:。# 登录Docker仓库(以阿里云为例) docker login --username=用户名 registry.cn-hangzhou.aliyuncs.com # 退出仓库登录 docker logout # 给镜像打标签(推送镜像到仓库前必须操作) # 语法:docker tag 本地镜像ID 仓库地址/命名空间/镜像名:版本号 docker tag a31aabe9e714 registry.cn-hangzhou.aliyuncs.com/krisswen/linux1:1.0 # 推送镜像到仓库 docker push registry.cn-hangzhou.aliyuncs.com/krisswen/linux1:1.0 # 从仓库拉取镜像 docker pull registry.cn-hangzhou.aliyuncs.com/krisswen/linux1:1.0 - 迈向容器编排:当需要管理成百上千个容器时,手动使用Docker命令将变得力不从心。此时,容器编排工具如 Kubernetes (K8s) 便登上舞台。K8s可以自动化容器的部署、扩展和管理。学习Docker是理解K8s中Pod、Service等概念的良好基础。了解Docker Compose(用于定义和运行多容器应用)则是通往K8s的实用中间步骤。
五、速查与实践总结
为了便于日常查阅,我们将最常用的命令整理成表。记住,熟练源于实践,建议在安全的环境(如本地开发机)中多动手尝试这些命令。
| 功能分类 | 核心命令 |
|---|---|
| 镜像查看 | |
| 镜像搜索 | |
| 镜像下载 | |
| 镜像删除 | |
| 容器创建 | |
| 容器启动 | |
| 容器停止 | |
| 容器查看 | |
| 进入容器 | |
| 容器删除 | |
| 仓库操作 |
区别:
- 会创建新的终端进程,不影响容器运
- 直接连接容器的主进程,退出后容器停止。
注意:删除容器不会影响镜像,镜像可重新创建新容器。
注意:推送镜像到私有仓库时,需先登录且镜像标签符合仓库规范(仓库地址/命名空间/镜像名:版本号)。
总之,Docker命令是解锁容器化能力的钥匙。从镜像管理到容器控制,再到数据持久化与仓库交互,构建了一套完整的应用生命周期管理方案。深入理解并熟练运用这些命令,不仅能提升个人开发运维效率,更是构建现代化、可扩展的云原生应用架构(如基于Kubernetes的微服务)的坚实基础。现在,就打开终端,开始你的容器化之旅吧!

-i-tdocker imagesdocker images -adocker images -qdocker search 镜像名docker search --limit 数量 镜像名docker pull 镜像名[:TAG]docker rmi 镜像ID/名称docker rmi -f 镜像ID/名称docker run -it --name=容器名 镜像名 /bin/bashdocker start 容器ID/名称docker stop 容器ID/名称docker kill 容器ID/名称docker psdocker ps -adocker inspect 容器ID/名称docker exec -it 容器ID/名称 /bin/bashdocker rm 容器ID/名称docker rm -f 容器ID/名称docker logindocker push 镜像标签docker pull 镜像标签execattach
浙公网安备 33010602011771号