【学习笔记】Docker命令大全
本文最后更新于 2025-06-24,文章可能存在过时内容,如有过时内容欢迎留言或者联系我进行反馈。
基本信息查询
查看 Docker 版本
此命令会展示客户端和服务端的 Docker 版本信息,对于确保不同环境中 Docker 版本兼容性十分重要。比如在团队协作开发时,统一 Docker 版本能避免因版本差异导致的问题。
docker version查看 Docker 系统信息
执行该命令后,会输出 Docker 的系统级详细信息,涵盖镜像数量、容器数量、存储驱动类型、资源限制等内容。通过这些信息,可对当前 Docker 运行环境有全面了解,方便进行性能调优和资源管理。
docker info列出正在运行的容器
它会列出当前正在运行的容器,显示容器 ID、使用的镜像、启动时间、运行状态、端口映射等关键信息,有助于快速掌握正在运行的容器情况。
docker ps列出所有容器(包括停止的)
相比
docker ps,该命令会列出所有容器,不管是正在运行还是已经停止的,方便查找和管理历史容器。docker ps -a列出所有镜像
用于展示本地存储的所有 Docker 镜像,包括仓库源、标签、镜像 ID、创建时间和大小等信息,便于管理和清理本地镜像。
docker images查看容器详细信息
将
<container>替换为实际容器 ID 或名称,执行后会以 JSON 格式输出容器的详细信息,包括网络配置、挂载点、环境变量等,在排查容器问题时非常有用。docker inspect <container>查看镜像详细信息
把
<image>换成具体镜像 ID 或名称,能获取镜像的详细构建信息、分层情况等,对了解镜像内部结构和构建过程很有帮助。docker inspect <image>查看 Docker 事件
该命令实时输出 Docker 运行时的各种事件,如容器的创建、启动、停止、删除,镜像的拉取、推送等,方便监控 Docker 系统的活动情况。
docker events查看镜像历史
通过此命令,能查看指定镜像的构建历史,了解镜像从基础镜像开始,每一层的创建操作和大小变化,有助于分析镜像大小和优化镜像构建过程。
docker history <image>查看容器资源使用情况
实时显示正在运行容器的 CPU、内存、网络、磁盘 I/O 等资源使用情况,对于监控容器性能和及时发现资源瓶颈意义重大。
docker stats
容器管理
后台运行容器
-d参数让容器在后台运行,<image>为要使用的镜像名称或 ID,常用于启动一些不需要用户实时交互的服务类容器,如数据库容器。docker run -d <image>运行交互式容器
-it参数表示以交互式终端方式运行容器,会进入容器的 Shell 环境,方便在容器内进行调试、配置等操作。例如在基于 Ubuntu 镜像的容器中安装软件包。docker run -it <image> /bin/bash停止正在运行的容器
<container>为要停止的容器 ID 或名称,正常停止容器,容器内的应用程序会收到停止信号,有机会进行一些清理操作。docker stop <container>启动已停止的容器
用于重新启动一个已经停止的容器,让容器恢复到之前的运行状态。
docker start <container>重启容器
先停止容器,再启动容器,可用于应用程序配置更新后,需要重启容器使新配置生效的场景。
docker restart <container>强制停止容器
直接向容器发送 SIGKILL 信号,强制终止容器运行,适用于容器出现异常,无法正常停止的情况。
docker kill <container>删除容器
移除指定的容器,在删除前,容器必须处于停止状态。若要删除正在运行的容器,可使用
docker rm -f <container>,但这会强制停止并删除容器。docker rm <container>连接到正在运行的容器
连接到一个正在运行的容器的标准输入、输出和错误流,不过当多个用户同时使用
attach时,可能会出现输入输出混乱的情况,所以更推荐使用docker exec。docker attach <container>在容器中执行命令
在运行的容器内执行指定命令
<cmd>,<container>为容器 ID 或名称。例如在运行的 Nginx 容器中执行nginx -s reload命令来重新加载配置。docker exec <container> <cmd>重命名容器
将容器从
<old - name>重命名为<new - name>,方便对容器进行更有意义的命名,提高管理效率。docker rename <old - name> <new - name>暂停容器
暂停容器内的所有进程,容器占用的资源会保持,但进程不再运行,常用于临时暂停某个容器的服务,又不想完全停止它。
docker pause <container>恢复暂停的容器
让之前暂停的容器恢复运行,容器内的进程继续执行。
docker unpause <container>更新容器配置
可用于更新容器的资源限制、重启策略等配置,例如通过
docker update --memory = "512m" <container>为容器设置内存限制。docker update <container>导出容器为 tar 包
将指定容器的文件系统导出为一个 tar 包,
<file>为导出的文件名,常用于容器数据备份或在不同环境中迁移容器。docker export <container> > <file>查看容器日志
输出容器内应用程序的标准输出和标准错误日志,通过这些日志能排查容器内应用程序的运行问题,如启动失败、运行时错误等。
docker logs <container>阻塞等待容器退出
该命令会阻塞当前终端,直到指定容器退出,并返回容器的退出状态码,在脚本中可用于判断容器是否成功运行结束。
docker wait <container>查看容器文件系统变化
显示容器文件系统相对于基础镜像的变化,包括新增、修改和删除的文件和目录,有助于了解容器内应用程序对文件系统的操作情况。
docker diff <container>从容器中复制文件到宿主机
将容器
<container>内的<path>路径下的文件或目录复制到宿主机的<dest>路径下,方便获取容器内生成的数据或配置文件。docker cp <container>:<path> <dest>将容器保存为镜像
基于当前容器的状态和更改,创建一个新的镜像
<image>,常用于将经过配置和调试后的容器固化为可复用的镜像。docker commit <container> <image>
镜像管理
将镜像推送到仓库
将本地镜像
<image>推送到 Docker 仓库,前提是已经登录到相应的仓库,并且镜像名称符合仓库的命名规则。docker push <image>构建镜像
-t参数为构建的镜像指定名称和标签,<path>为 Dockerfile 所在路径。Docker 会根据 Dockerfile 中的指令构建镜像,这是自定义镜像的重要方式。docker build -t <image> <path>删除本地镜像
删除本地指定的镜像
<image>,若镜像被多个容器使用,需先删除相关容器才能删除镜像。也可使用docker rmi -f <image>强制删除镜像,但要谨慎操作,以免影响正在运行的容器。docker rmi <image>给镜像添加标签
为已有的镜像
<image>添加一个新的标签<new - tag>,方便对镜像进行版本管理或标记不同用途的镜像。docker tag <image> <new - tag>搜索镜像
在 Docker Hub 上搜索包含
<keyword>的镜像,会列出镜像名称、描述、星级等信息,便于找到满足需求的基础镜像。docker search <keyword>拉取镜像
从 Docker 仓库下载指定镜像
<image>到本地,如果不指定标签,默认拉取latest标签的镜像。docker pull <image>保存镜像为 tar 包
将指定镜像
<image>保存为一个 tar 包<file>,可用于在没有网络连接的环境中传输和加载镜像。docker save -o <file> <image>从 tar 包加载镜像
从之前保存的 tar 包
<file>中加载镜像到本地 Docker 环境,与docker save配合使用,实现镜像的备份和恢复。docker load -i <file>
网络管理
列出网络
显示当前 Docker 环境中的所有网络,包括网络 ID、名称、驱动类型等信息,便于管理和查看容器网络配置。
docker network ls创建网络
创建一个新的网络
<network>,可指定网络驱动类型(如bridge、overlay等)以及其他网络配置参数,以满足不同的网络需求。docker network create <network>删除网络
删除指定的网络
<network>,删除前需确保没有容器连接到该网络。docker network rm <network>查看网络详细信息
输出指定网络
<network>的详细信息,如子网、网关、DNS 配置等,帮助了解网络的具体设置和运行状态。docker network inspect <network>连接容器到网络
将正在运行的容器
<container>连接到指定网络<network>,使容器能够与该网络中的其他容器通信。docker network connect <network> <container>从网络断开容器连接
将容器
<container>从指定网络<network>中断开连接,容器将无法再通过该网络与其他容器通信。docker network disconnect <network> <container>
卷管理
列出卷
展示当前 Docker 环境中所有的卷,包括卷的名称、驱动类型等信息,方便管理和查看容器数据存储。
docker volume ls创建卷
创建一个新的卷
<volume>,用于在容器间共享数据或持久化容器数据,避免容器删除时数据丢失。docker volume create <volume>删除卷
删除指定的卷
<volume>,删除前需确保没有容器在使用该卷。docker volume rm <volume>查看卷详细信息
输出指定卷
<volume>的详细信息,如挂载点、容量限制等,有助于了解卷的配置和使用情况。docker volume inspect <volume>在容器中挂载卷
在启动容器时,将卷
<volume>挂载到容器内的<container - path>路径,实现容器与宿主机或其他容器之间的数据共享和持久化。例如docker run -v my - volume:/data nginx将my - volume卷挂载到 Nginx 容器的/data目录。docker run -v <volume>:<container - path> <image>
容器运行选项
指定容器名称
使用
--name参数为容器指定一个易于识别的名称<name>,方便在后续管理中通过名称操作容器,而不是使用难以记忆的容器 ID。docker run --name <name> <image>映射端口
将宿主机的端口
<host - port>映射到容器内的端口<container - port>,使外部可以通过宿主机端口访问容器内的服务。比如docker run -p 8080:80 nginx将 Nginx 容器的 80 端口映射到宿主机的 8080 端口。docker run -p <host - port>:<container - port> <image>设置环境变量
使用
-e参数为容器设置环境变量<env - var>,可以设置多个环境变量。例如docker run -e "DB_USER = root" -e "DB_PASSWORD = password" mysql为 MySQL 容器设置数据库用户名和密码环境变量。docker run -e <env - var> <image>限制容器资源
限制CPU
通过
--cpus参数限制容器使用的 CPU 核心数,<number>为具体的 CPU 核心数,如0.5表示使用半个 CPU 核心。docker run --cpus = "<number>" <image>限制内存
使用
--memory参数设置容器可使用的最大内存,<size>为内存大小,如512m表示 512MB 内存。docker run --memory = "<size>" <image>
设置容器重启策略
--restart参数用于设置容器的重启策略<policy>,常见策略有always(总是重启)、on - failure(容器以非零状态码退出时重启)、no(从不重启,默认值)。例如docker run --restart = always nginx确保 Nginx 容器在任何情况下都自动重启。docker run --restart = <policy> <image>
Docker Compose
安装 Docker Compose
不同操作系统安装方式略有不同,以 Linux 为例,可通过以下命令安装:
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker - compose - $(uname - s)-$(uname - m)" -o /usr/local/bin/docker - compose sudo chmod +x /usr/local/bin/docker - compose启动服务
在包含
docker - compose.yml文件的目录下,执行:docker - compose up停止服务
停止并删除由
docker - compose.yml文件定义的所有服务容器、网络等资源。docker - compose down重启服务
重启由
docker - compose.yml文件定义的所有服务容器。docker - compose restart查看服务状态
显示当前由
docker - compose.yml文件管理的服务容器的运行状态,包括容器 ID、名称、状态等信息。docker - compose ps构建镜像
根据
docker - compose.yml文件中定义的服务,构建所需的镜像。如果镜像已经存在,会根据情况更新镜像。docker - compose build执行命令
在指定的服务容器
<service>内执行命令<command>,例如docker - compose exec web python manage.py migrate在名为web的服务容器内执行 Django 的数据库迁移命令。docker - compose exec <service> <command>
Docker Swarm
初始化 Swarm 集群
在作为 Swarm 管理器的节点上执行,该命令会初始化一个新的 Swarm 集群,并输出加入集群的命令,用于其他节点加入该集群。
docker swarm init加入 Swarm 集群
在需要加入集群的节点上,运行
docker swarm init命令输出的加入指令,其中<token>为集群认证令牌,<manager-ip> 是 Swarm 管理器的 IP 地址,<manager-port> 为对应的端口号,三者缺一不可。docker swarm join --token <token> <manager-ip>:<manager-port>
- 感谢你赐予我前进的力量


