1953 字
10 分钟
💄Docker常用命令

基本类#

官方帮助文档

启动 docker#

Terminal window
systemctl start docker

关闭docker#

Terminal window
systemctl stop docker

重新启动 docker#

Terminal window
systemctl restart docker

docker设置自启动#

Terminal window
systemctl enable docker

查看docker运行状态#

Terminal window
systemctl status docker

查看docker版本号等信息#

Terminal window
docker version

显示docker的系统信息#

包括镜像和容器的数量等

Terminal window
docker info

docker帮助#

Terminal window
docker --help

镜像类#

查看本地镜像#

官网帮助文档

Terminal window
docker images

解释:

  • REPOSITORY 镜像的仓库源
  • TAG 镜像的标签
  • IMAGE ID 镜像的id
  • CREATED 镜像的创建时间
  • SIZE 镜像的大小
扩展命令#
可选项作用
-a列出所有镜像
-q只显示镜像的id

搜索镜像#

官网帮助文档

Terminal window
docker search
扩展命令#
可选项作用
-f <过滤条件>, —filter过滤镜像
--format使用 Go 模板进行漂亮打印搜索
--limit <限制数量>限制最大搜索结果数
--no-trunc显示完整的镜像描述
举例#

通过收藏数量过滤, 搜索STARS数量大于等于5000的 且是官方构建的镜像

  • is-official (boolean - true 或 false) - 镜像是否是官方的
  • stars (int - number) - 星星数

docker search mysql --filter=stars=5000 --filter is-official=true

拉取镜像#

官网帮助文档

Terminal window
docker pull
扩展命令#
可选项作用
-a, —all-tags下载仓库中所有标签的镜像
--disable-content-trust跳过镜像验证 默认true
--platform设置平台
-q, —quiet禁止详细输出
举例#

以下三个命令是一样的含义,不指定tag默认拉取最新版本

  • docker pull mysql
  • docker pull docker.io/mysql:latest
  • docker pull mysql:latest

拉取amd64平台的镜像

docker pull --platform=linux/amd64 jlesage/firefox

删除镜像#

官网帮助文档

Terminal window
docker rmi
扩展命令#
可选项作用
-f, —force是否强制删除
--no-prune不删除未标记的父类
举例#

删除镜像可以使用镜像名或镜像Id, 若镜像在运行则会报错

docker rmi 镜像名/镜像ID

强制删除多个镜像,若使用该镜像的容器在运行也会删除

docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID

删除全部镜像,以下任意一个命令都可以

Terminal window
docker rmi -f $(docker images -aq)
docker rmi -f `docker images -aq`

加载镜像#

官网帮助文档

Terminal window
docker load
扩展命令#
可选项作用
-i, —input从 tar 存档文件读取,而不是标准输入
-q, —quiet禁止加载输出
举例#

从标准输入加载镜像

docker load < busybox.tar.gz

从文件中加载镜像

docker load -i fedora.tar

保存镜像#

官网帮助文档

Terminal window
docker save
扩展命令#
可选项作用
-o, —output写入文件,而不是标准输入
举例#

从标准输入保存镜像

docker save ubuntu:latest > /root/ubuntu.tar

保存到指定目录

docker save -o ./ubuntu-latest.tar ubuntu:latest

容器类#

查看正在运行的容器#

官网帮助文档

Terminal window
docker ps
扩展命令#
可选项作用
-a, —all显示所有容器(默认只显示正在运行的容器)
-f, —filter根据提供的条件过滤输出
--format使用自定义模板格式化输出:
‘table’:以表格格式打印输出,包含列标题(默认)
‘table TEMPLATE’:使用给定的 Go 模板以表格格式打印输出
‘json’:以 JSON 格式打印
‘TEMPLATE’:使用给定的 Go 模板打印输出。
-n, —last显示最后创建的 n 个容器(包括所有状态),默认值-1
-l, —latest显示最新创建的容器(包括所有状态)
--no-trunc不要截断输出
-q, —quiet只显示容器ID
-s, —size显示文件大小
举例#
显示所有容器#

显示所有容器(包含所有状态的)

docker ps -a

过滤器#

–f 的格式是键=值对。如果有多个过滤器,则传递多个标志

查找正在运行的且名字包含local-mysql的容器

docker ps -f status=running -f name="local-mysql"

过滤器作用
id容器ID
name容器名称
label一个任意字符串,代表一个键或者一个键值对。表示为 或 =
exited一个整数,代表容器的退出码。仅在与 –all 选项一起使用时才有意义。
status状态为 created(已创建)、restarting(正在重启)、running(正在运行)、removing(正在移除)、paused(已暂停)、exited(已退出)或 dead(已死亡)其中一种。
ancestor筛选出共享给定镜像作为祖先的容器。表示为[:]、或image@digest
before 或 since筛选在给定容器 ID 或名称之前或之后创建的容器
volume筛选挂载了给定卷或绑定挂载的正在运行的容器。
network筛选连接到给定网络的正在运行的容器。
publish 或 expose筛选发布或暴露给定端口的容器。表示为[/]或/[]
health根据容器的健康检查状态筛选容器。可能的状态有 starting(启动中)、healthy(健康)、unhealthy(不健康)或 none(无)。
isolation仅适用于 Windows 守护进程。值为 default、process 或 hyperv 之一。
is-task筛选作为服务”任务”的容器。布尔选项(true 或 false)。
自定义输出格式#

自定义输出格式

docker ps -a --format "table {{.ID}}\t{{.Names}}\t{{.Image}}\t{{printf \"%.40s\" .Ports}}\t{{.Status}}"

docker ps --format "{{.ID}}: {{.Command}} {{.RunningFor}}"

docker ps --format json

按照Go模板的方式会涉及到以下占位符:

过滤器作用
.ID容器ID
.Image镜像ID
.Command引用的命令
.CreatedAt容器创建的时间
.RunningFor自容器启动以来的经过时间。
.Ports暴露的端口。
.State容器状态(例如:”created”(已创建)、”running”(运行中)、”exited”(已退出))。
.Status容器状态,包括持续时间与健康状态的详细信息。
.Size容器磁盘大小
.Names容器名称
.Labels分配给容器的所有标签。
.Label此容器特定标签的值。例如 ’{{.Label “com.docker.swarm.cpu”}}’
.Mounts在此容器中挂载的卷的名称。
.Networks连接到这个容器的网络的名称。
查看最新创建的n个容器#

该选项后面必须加一个数字,否则会报错。该选项显示-n后面数字个容器,无论容器处于什么状态。

docker ps -n 3

查看最新创建的1个容器#

该选项显示最新创建的容器,无论该容器处于什么状态。

docker ps -l

不截断输出#

容器ID完整输出了

docker ps --no-trunc

精简输出#

只输出容器ID

docker ps -q

磁盘容量#

容器列表的最右侧增加SIZE列,显示两种不同的磁盘容量大小

docker ps -s

image-20250218104008025

其中,前面的数字表示用于每个容器的可写层的磁盘数据量。 后面括号中“virtual” 表示的是容器使用的只读镜像数据以及可写层所用的磁盘空间总量。多个容器可能会共享一些或全部的只读镜像数据。从同一镜像启动的两个容器共享 100% 的只读数据,而具有共同层的不同镜像的两个容器则共享这些共同层。因此,不能简单地将虚拟大小相加。这可能会大大高估总磁盘使用量。

所有正在运行的容器在磁盘上使用的总磁盘空间是每个容器的 size 和 virtual size 值的组合。如果多个容器从完全相同的镜像启动,这些容器的总磁盘大小将是容器的总和(size of containers)加上一个镜像大小(virtual size – size)。

以上显示的磁盘空间占用情况,不包括以下五种方式:

存储在日志驱动程序中的日志文件占用的磁盘空间。如果你的容器生成大量日志数据且未配置日志轮换,则这可能是非常重要的。

容器使用的卷和绑定挂载。 用于容器的配置文件的磁盘空间,这些文件通常很小。 写入磁盘的内存(如果启用了交换)。 如果你正在使用实验性的检查点/恢复功能,则还包括检查点。