目 录CONTENT

文章目录

💄Docker常用命令

柯基
2024-12-17 / 0 评论 / 1 点赞 / 135 阅读 / 2,176 字

基本类

官方帮助文档

启动 docker

systemctl start docker

关闭docker

systemctl stop docker

重新启动 docker

systemctl restart docker

docker设置自启动

systemctl enable docker

查看docker运行状态

systemctl status docker

查看docker版本号等信息

docker version

显示docker的系统信息

包括镜像和容器的数量等

docker info

docker帮助

docker --help

镜像类

查看本地镜像

官网帮助文档

docker images

解释:

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

搜索镜像

官网帮助文档

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

拉取镜像

官网帮助文档

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

删除镜像

官网帮助文档

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

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

docker rmi 镜像名/镜像ID

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

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

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

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

加载镜像

官网帮助文档

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

从标准输入加载镜像

docker load < busybox.tar.gz

从文件中加载镜像

docker load -i fedora.tar

保存镜像

官网帮助文档

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

从标准输入保存镜像

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

保存到指定目录

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

容器类

查看正在运行的容器

官网帮助文档

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)。

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

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

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

1

评论区