7、docker |其余命令
1、docker context
docker context
命令用于管理 Docker 上下文,上下文包含了 Docker 守护进程的配置信息,比如远程 Docker 守护进程的配置。这个命令可以帮助用户在不同的 Docker 环境之间切换,比如在本地 Docker 和远程 Docker 之间切换。
命令 | 作用 | 出现频率 | 备注 |
---|---|---|---|
docker context create [OPTIONS] <context-name> | 创建一个新的 Docker 上下文 | 中频 | 可以指定远程 Docker 守护进程的配置 |
docker context ls | 列出所有 Docker 上下文 | 高频 | 显示当前所有上下文及其状态 |
docker context use <context-name> | 切换到指定的 Docker 上下文 | 高频 | 切换后所有 Docker 命令将在该上下文中执行 |
docker context inspect <context-name> | 查看指定 Docker 上下文的详细信息 | 中频 | 包括上下文的配置和元数据 |
docker context rm <context-name> | 删除指定的 Docker 上下文 | 中频 | 删除后无法再使用该上下文 |
docker context update <context-name> | 更新指定 Docker 上下文的配置 | 中频 | 修改上下文的配置信息 |
1.1、docker context create
命令 | 作用 | 出现频率 | 备注 |
---|---|---|---|
docker context create <context-name> | 创建一个新的 Docker 上下文 | 中频 | 允许定义连接到不同 Docker 守护进程的配置 |
docker context create --docker "host=<endpoint>" <context-name> | 指定 Docker 守护进程的连接端点 | 高频 | 用于连接远程 Docker 守护进程或指定不同的配置 |
docker context create --from <context-name> | 从现有上下文创建新上下文 | 中频 | 基于现有的上下文创建一个新的上下文,可以修改配置 |
docker context create --description <description> <context-name> | 为新上下文添加描述 | 低频 | 描述上下文的用途,便于识别和管理 |
# 创建一个名为 my-context 的新 Docker 上下文,指向本地 Docker 守护进程
docker context create my-context --docker "host=unix:///var/run/docker.sock"# 创建一个名为 my-local-context 的新 Docker 上下文,指向本地 Docker 守护进程
docker context create my-local-context --docker "host=unix:///var/run/docker.sock"# 从现有上下文 my-local-context 创建一个新上下文 my-copied-context
docker context create my-copied-context --from my-local-context# 创建一个带有描述的 Docker 上下文
docker context create --description "Context with explicit local endpoint" my-explicit-context --docker "host=unix:///var/run/docker.sock"
在创建新的 Docker 上下文时,可以通过 --docker
选项指定 Docker 守护进程的连接端点,这允许你连接到远程 Docker 守护进程或指定不同的配置。此外,可以使用 --from
选项从现有上下文创建新上下文,这在需要基于现有配置创建新上下文时非常有用。为新上下文添加描述可以帮助你更好地管理和识别不同的上下文配置。
1.2、docker context ls
命令 | 作用 | 出现频率 | 备注 |
---|---|---|---|
docker context ls | 列出所有 Docker 上下文 | 高频 | 显示所有上下文及其状态 |
docker context ls -q | 仅列出 Docker 上下文的名称 | 中频 | 输出上下文名称列表,便于脚本处理 |
docker context ls --quiet | 同上,仅输出上下文名称 | 中频 | 等同于 -q |
docker context ls --format "table {{.ContextName}}\t{{.Description}}\t{{.Endpoints}}" | 自定义输出格式 | 低频 | 根据需要显示不同信息 |
# 列出所有 Docker 上下文及其详细信息
docker context ls# 仅列出所有 Docker 上下文的名称
docker context ls -q# 列出所有 Docker 上下文及其描述和端点信息
docker context ls --format "table {{.ContextName}}\t{{.Description}}\t{{.Endpoints}}"
1.3、docker context use
命令 | 作用 | 出现频率 | 备注 |
---|---|---|---|
docker context use <context-name> | 切换到指定的 Docker 上下文 | 高频 | 切换后所有 Docker 命令将在该上下文中执行 |
docker context use --current | 显示当前使用的 Docker 上下文 | 中频 | 快速查看当前活跃的上下文 |
docker context use --all | 切换所有 shell 会话到指定的 Docker 上下文 | 低频 | 适用于需要全局切换上下文的场景 |
# 切换到名为 my-context 的 Docker 上下文
docker context use my-context# 查看当前正在使用的 Docker 上下文
docker context use --current# 将所有 shell 会话切换到名为 my-context 的 Docker 上下文
docker context use --all my-context
1.4、docker context inspect
命令 | 作用 | 出现频率 | 备注 |
---|---|---|---|
docker context inspect <context-name> | 显示指定 Docker 上下文的详细信息 | 中频 | 包括配置、元数据和当前状态 |
docker context inspect -f <format> <context-name> | 格式化输出指定 Docker 上下文的信息 | 低频 | 支持 Go 模板语法,用于脚本处理 |
# 显示名为 my-context 的 Docker 上下文的详细信息
docker context inspect my-context# 以 JSON 格式输出上下文信息,便于脚本解析
docker context inspect --format '{{json .}}' my-context# 输出上下文的 Docker 守护进程端点
docker context inspect --format '{{.Docker.Host}}' my-context# 输出上下文的描述信息
docker context inspect --format '{{.Description}}' my-context
1.5、docker context rm
命令 | 作用 | 出现频率 | 备注 |
---|---|---|---|
docker context rm <context-name> | 删除指定的 Docker 上下文 | 中频 | 删除后将无法再切换到该上下文 |
docker context rm -f <context-name> | 强制删除指定的 Docker 上下文 | 低频 | 即使上下文正在被使用也会被删除 |
docker context rm --all | 删除所有 Docker 上下文 | 低频 | 仅保留默认上下文 |
# 删除名为 my-context 的 Docker 上下文
docker context rm my-context# 强制删除名为 my-context 的 Docker 上下文(如果正在使用也会被删除)
docker context rm -f my-context# 删除所有 Docker 上下文,只保留默认上下文
docker context rm --all
这些命令用于管理 Docker 上下文,允许你删除不再需要的上下文,从而释放资源。使用 -f
参数可以强制删除正在使用的上下文,适用于需要立即清理环境的场景。使用 --all
参数可以一次性删除所有上下文,但默认上下文会被保留。
1.6、docker context update
用于更新现有 Docker 上下文的配置。你可以使用这个命令来修改上下文的描述、Docker 守护进程的端点配置等。
# 更新名为 my-context 的 Docker 上下文的描述
docker context update my-context --description "My local Docker context"# 更新 Docker 守护进程的端点配置
docker context update my-context --docker "host=unix://var/run/docker.sock"# 验证更新后的上下文配置
docker context inspect my-context
2、docker manifest
Docker manifest 命令用于管理多架构镜像列表(manifest lists)。这些命令允许你创建、更新、推送和管理多架构镜像列表,使得在不同架构的系统上分发和使用 Docker 镜像更加方便。
命令 | 作用 | 出现频率 | 备注 |
---|---|---|---|
docker manifest create <list-name> <image>... | 创建一个新的多架构镜像列表 | 中频 | 允许单个镜像名引用不同架构的镜像 |
docker manifest annotate <list-name> <image> --arch <arch> --os <os> | 为镜像列表中的镜像添加架构和操作系统信息 | 低频 | 指定镜像支持的架构和操作系统 |
docker manifest push <list-name> | 将镜像列表推送到注册中心 | 高频 | 需要先登录注册中心 |
docker manifest inspect <list-name> | 查看镜像列表的详细信息 | 中频 | 包括镜像列表中的镜像和平台信息 |
2.1、docker manifest create
Docker manifest create 命令用于创建一个新的多架构镜像列表(manifest list),允许你通过单个名称引用不同架构和操作系统的多个镜像。这对于分发多架构镜像特别有用。
命令 | 作用 | 出现频率 | 备注 |
---|---|---|---|
docker manifest create <list-name> <image>... | 创建一个新的多架构镜像列表 | 中频 | 允许单个镜像名引用不同架构的镜像 |
docker manifest create <list-name> --amend <image> | 修改镜像列表中的镜像 | 低频 | 使用 --amend 标志添加或更新镜像列表中的条目 |
# 创建一个名为 my-alpine-list 的多架构镜像列表,包含 amd64 和 arm64 架构的 Alpine 镜像
docker manifest create my-alpine-list alpine:latest --amend --arch amd64 --os linux
docker manifest create my-alpine-list alpine:latest --amend --arch arm64 --os linux# 使用 docker manifest create 命令来创建清单列表。该命令需要你指定要创建的清单列表的名称,后面跟着要包含在列表中的镜像名称。
docker manifest create localhost:5000/multiarch-demo:latest \localhost:5000/multiarch-demo:latest@sha256:$(docker buildx imagetools inspect localhost:5000/multiarch-demo:latest | grep 'Digest:' | awk '{print $2}' | head -n 1) \localhost:5000/multiarch-demo:latest@sha256:$(docker buildx imagetools inspect localhost:5000/multiarch-demo:latest | grep 'Digest:' | awk '{print $2}' | tail -n 1)
2.2、docker manifest annotate
Docker manifest annotate 命令用于给本地的镜像 manifest 添加额外的信息。创建多架构镜像的本地镜像后,可以选择对其进行注释。允许的注释内容包括体系结构和操作系统(如果已经有值,会覆盖镜像的当前值),操作系统功能以及体系结构变体。
命令 | 作用 | 出现频率 | 备注 |
---|---|---|---|
docker manifest annotate <list-name> <image> --arch <arch> --os <os> | 为镜像列表中的镜像添加架构和操作系统信息 | 低频 | 指定镜像支持的架构和操作系统 |
docker manifest annotate <list-name> <image> --os-features <features> | 为镜像列表中的镜像添加操作系统特性 | 低频 | 指定操作系统支持的特性 |
docker manifest annotate <list-name> <image> --os-version <version> | 为镜像列表中的镜像添加操作系统版本 | 低频 | 指定操作系统的版本 |
docker manifest annotate <list-name> <image> --variant <variant> | 为镜像列表中的镜像添加架构变体 | 低频 | 指定架构的变体,如 arm64 架构的 v7 或 v8 特性 |
# 为名为 my-alpine-list 的镜像列表中的 alpine:latest 镜像添加 amd64 和 linux 信息
docker manifest annotate my-alpine-list alpine:latest --arch amd64 --os linux# 为名为 my-alpine-list 的镜像列表中的 alpine:latest 镜像添加操作系统特性 fips
docker manifest annotate my-alpine-list alpine:latest --os-features fips# 为名为 my-alpine-list 的镜像列表中的 alpine:latest 镜像添加操作系统版本 1.0
docker manifest annotate my-alpine-list alpine:latest --os-version 1.0# 为名为 my-alpine-list 的镜像列表中的 arm64 架构镜像添加 v8 变体信息
docker manifest annotate my-alpine-list alpine:latest --arch arm64 --variant v8
2.3、docker manifest push
用于将创建好的清单列表(manifest list)推送到镜像仓库(registry)。推送清单列表后,其他人就可以拉取这个多架构镜像了。当有人使用清单列表的标签拉取镜像时,Docker 会自动为他们系统的架构下载正确的镜像。
# 将清单列表 localhost:5000/multiarch-demo:latest 推送到镜像仓库
docker manifest push localhost:5000/multiarch-demo:latest# 推送清单列表到 Docker Hub
docker manifest push your_docker_username/my-alpine:latest
2.4、docker manifest inspect
用于检查本地多架构镜像列表(manifest list)的详细信息。这个命令可以帮助你查看镜像列表中包含的所有镜像,以及它们对应的平台信息(如架构和操作系统)。
命令 | 作用 | 出现频率 | 备注 |
---|---|---|---|
docker manifest inspect <manifest-list-name> | 查看指定的多架构镜像列表的详细信息 | 中频 | 显示镜像列表中所有镜像的详细信息 |
docker manifest inspect --pretty <manifest-list-name> | 以更易读的格式查看镜像列表信息 | 低频 | 提供格式化输出,便于阅读 |
# 查看名为 my-alpine-list 的多架构镜像列表的详细信息
docker manifest inspect my-alpine-list# 以更易读的格式查看多架构镜像列表信息
docker manifest inspect --pretty my-alpine-list
3、docker trust
用于与 Docker Content Trust 交互,管理镜像签名和信任策略。
添加签名者:使用
docker trust signer add
命令将新的签名者添加到仓库中,允许其他实体为该仓库签名镜像。撤销镜像签名:使用
docker trust revoke
命令撤销特定 Docker 镜像仓库中所有标签的签名,这在发生安全事件或决定不再使用该来源的镜像时非常有用。对镜像进行签名:使用
docker trust sign
命令对镜像进行签名,确保镜像的完整性和发布者。检查仓库的签名者:使用
docker trust inspect
命令检查仓库的签名者,了解谁被授权为特定仓库签名镜像。查看签名状态:使用
docker trust inspect --pretty <image-name>
命令以易读格式查看已签名镜像的详细信息,包括签名者和签名状态。
4、docker system
是 Docker CLI 的一个子命令,用于管理和维护 Docker 系统。它包含多个子命令,用于执行系统级别的操作,比如清理资源、查看信息等。
命令 | 作用 | 出现频率 | 备注 |
---|---|---|---|
docker system info | 显示 Docker 系统信息 | 中频 | 提供关于 Docker 守护进程和系统环境的信息 |
docker system prune | 清理所有未使用的资源 | 中频 | 包括未使用的镜像、容器、网络和数据卷 |
docker system df | 显示 Docker 使用的磁盘空间 | 中频 | 显示镜像、容器和数据卷的磁盘使用情况 |
docker system events | 从 Docker 守护进程获取实时事件 | 低频 | 可以用于监控和调试 |
4.1、docker system info
命令 | 作用 | 出现频率 | 备注 |
---|---|---|---|
docker system info | 显示 Docker 系统信息 | 高频 | 提供关于 Docker 守护进程和系统环境的详细信息 |
docker system info --format "table {{.Key}}\t{{.Value}}" | 以表格格式显示信息 | 中频 | 便于阅读和分析 |
docker system info --format "{{json .}}" | 以 JSON 格式输出信息 | 低频 | 适合脚本处理和自动化 |
# 显示所有 Docker 系统信息
docker system info# 以表格格式显示 Docker 系统信息,便于阅读
docker system info --format "table {{.Key}}\t{{.Value}}"# 以 JSON 格式输出 Docker 系统信息,适合脚本处理
docker system info --format "{{json .}}"
4.2、docker system prune
用于清理 Docker 系统中不再使用的资源,包括悬空的镜像、停止的容器、未使用的网络和数据卷等。这个命令有助于释放磁盘空间并保持系统的整洁。
命令 | 作用 | 出现频率 | 备注 |
---|---|---|---|
docker system prune | 清理所有未使用的资源 | 中频 | 包括悬空镜像、停止的容器、未使用的网络和数据卷 |
docker system prune -a | 清理所有未使用的镜像 | 高频 | 包括未被容器引用的镜像 |
docker system prune --volumes | 同时删除未使用的数据卷 | 中频 | 清理数据卷时需特别小心,以免丢失数据 |
docker system prune -f | 强制删除,无需用户确认 | 中频 | 直接执行清理操作,不进行提示 |
docker system prune --all | 清理所有未使用的资源,包括所有未使用的镜像 | 低频 | 等同于 -a 和 --volumes 的组合 |
# 清理所有未使用的资源(默认不包括镜像)
docker system prune# 清理所有未使用的镜像(包括悬空镜像)
docker system prune -a# 清理所有未使用的资源,包括未使用的数据卷
docker system prune --volumes# 强制删除所有未使用的资源,无需用户确认
docker system prune -f# 清理所有未使用的资源,包括所有未使用的镜像和数据卷
docker system prune --all
4.3、docker system df
用于显示 Docker 系统使用的磁盘空间,包括镜像、容器、数据卷和构建缓存所占用的空间。这个命令可以帮助你了解 Docker 环境的存储使用情况,从而更好地管理资源。
命令 | 作用 | 出现频率 | 备注 |
---|---|---|---|
docker system df | 显示 Docker 系统使用的磁盘空间 | 中频 | 包括镜像、容器、数据卷和构建缓存 |
docker system df --verbose | 显示更详细的磁盘使用信息 | 低频 | 包括每个镜像、容器和数据卷的大小 |
docker system df --human | 以易读的格式显示磁盘使用信息 | 高频 | 显示大小单位,如 KB、MB、GB |
docker system df --format | 定制输出格式 | 低频 | 支持 Go 模板语法,用于脚本处理 |
# 显示 Docker 系统使用的磁盘空间
docker system df# 显示更详细的磁盘使用信息
docker system df --verbose# 以易读的格式显示磁盘使用信息
docker system df --human# 定制输出格式,显示镜像、容器和数据卷的大小
docker system df --format "table {{.Size}}\t{{.Type}}\t{{.Status}}"
4.4、docker system events
用于实时显示 Docker 守护进程的事件日志。这个命令可以帮助你监控 Docker 守护进程的活动,例如容器的创建、启动、停止、删除等事件,以及镜像的拉取、推送等操作。
命令 | 作用 | 出现频率 | 备注 |
---|---|---|---|
docker system events | 显示所有 Docker 事件 | 中频 | 默认显示所有事件类型 |
docker system events --since <timestamp> | 显示自指定时间戳以来的事件 | 低频 | 用于获取特定时间段内的事件 |
docker system events --until <timestamp> | 显示直到指定时间戳的事件 | 低频 | 与 --since 配合使用,限定事件时间范围 |
docker system events --filter <filter> | 根据条件过滤事件 | 高频 | 支持多种过滤条件,如事件类型、容器名等 |
docker system events --format <format> | 自定义事件输出格式 | 低频 | 支持 Go 模板语法,用于脚本处理 |
# 显示所有 Docker 事件
docker system events# 显示自 1 分钟前以来的事件
docker system events --since 1m# 显示直到 1 分钟前的事件
docker system events --until 1m# 过滤显示容器创建和启动的事件
docker system events --filter event=create --filter event=start# 自定义事件输出格式,仅显示事件类型和容器 ID
docker system events --format "table {{.Type}}\t{{.ID}}"
5、docker plugin
管理 Docker 插件,允许用户安装、升级、禁用和卸载插件。
5.1、docker plugin create
使用 docker plugin create
命令创建插件的步骤:
准备插件数据目录,包括创建
config.json
文件来定义插件的属性和接口。执行
docker plugin create
命令来构建插件,该命令读取指定目录中的config.json
文件并注册插件与 Docker 守护进程。验证插件是否成功创建并可用在 Docker 环境中。
# 创建名为 my-plugin 的插件并使用 my-plugin-data 目录
sudo docker plugin create my-plugin ./my-plugin-data
5.2、docker plugin ls
命令 | 作用 | 出现频率 | 备注 |
---|---|---|---|
docker plugin ls | 列出所有已安装的 Docker 插件 | 中频 | 显示插件的名称、描述、状态等信息 |
docker plugin ls -q | 仅列出插件的名称 | 低频 | 输出插件名称列表,便于脚本处理 |
docker plugin ls --quiet | 同上,仅输出插件名称 | 低频 | 等同于 -q |
docker plugin ls -f <filter> | 根据条件过滤插件列表 | 低频 | 支持多种过滤条件,如 name 、enabled 等 |
# 列出所有已安装的 Docker 插件及其详细信息
docker plugin ls# 仅列出所有已安装的 Docker 插件的名称
docker plugin ls -q# 过滤并列出所有启用的 Docker 插件
docker plugin ls --filter "enabled=true"# 过滤并列出特定名称的 Docker 插件
docker plugin ls --filter "name=my-plugin"
5.3、docker plugin enable
命令 | 作用 | 出现频率 | 备注 |
---|---|---|---|
docker plugin enable <plugin-name> | 启用指定的 Docker 插件 | 中频 | 使插件重新可用 |
docker plugin enable --help | 显示命令帮助信息 | 低频 | 获取关于命令的详细使用说明 |
# 启用名为 my-plugin 的 Docker 插件
docker plugin enable my-plugin
5.4、docker plugin disable
命令 | 作用 | 出现频率 | 备注 |
---|---|---|---|
docker plugin disable <plugin-name> | 禁用指定的 Docker 插件 | 中频 | 插件将不再被 Docker 使用 |
docker plugin disable --help | 显示命令帮助信息 | 低频 | 获取关于命令的详细使用说明 |
# 禁用名为 my-plugin 的 Docker 插件
docker plugin disable my-plugin
5.5、docker plugin rm
命令 | 作用 | 出现频率 | 备注 |
---|---|---|---|
docker plugin rm <plugin-name> | 移除指定的 Docker 插件 | 中频 | 需要先禁用插件 |
docker plugin rm -f <plugin-name> | 强制移除指定的 Docker 插件 | 低频 | 无需先禁用插件 |
docker plugin rm --all | 移除所有已安装的 Docker 插件 | 低频 | 移除所有插件 |
# 禁用并移除名为 my-plugin 的 Docker 插件
docker plugin disable my-plugin
docker plugin rm my-plugin# 强制移除名为 my-plugin 的 Docker 插件(无需先禁用)
docker plugin rm -f my-plugin# 移除所有已安装的 Docker 插件
docker plugin rm --all
5.6、docker plugin inspect
用于获取 Docker 插件的详细信息,包括插件的配置、元数据和状态。
命令 | 作用 | 出现频率 | 备注 |
---|---|---|---|
docker plugin inspect <plugin-name> | 获取指定 Docker 插件的详细信息 | 中频 | 输出 JSON 格式的插件信息 |
docker plugin inspect -f <format> <plugin-name> | 以指定格式输出插件信息 | 低频 | 支持 Go 模板语法,用于脚本处理 |
# 获取名为 my-plugin 的 Docker 插件的详细信息
docker plugin inspect my-plugin# 以 JSON 格式输出插件信息,便于脚本解析
docker plugin inspect --format '{{json .}}' my-plugin# 输出插件的名称和描述信息
docker plugin inspect --format '{{printf "Name: %s\\nDescription: %s" .Name .Description}}' my-plugin
5.7、docker plugin upgrade
命令 | 作用 | 出现频率 | 备注 |
---|---|---|---|
docker plugin upgrade PLUGIN --disable-content-trust | 升级插件时跳过内容验证 | 中 | 默认情况下,Docker 会验证插件镜像的签名。如果插件未签名或需要跳过验证,可以使用此选项。 |
docker plugin upgrade PLUGIN --grant-all-permissions | 升级插件时授予所有权限 | 高 | 如果插件需要额外的权限才能运行,使用此选项可以避免权限不足的问题。 |
docker plugin upgrade PLUGIN --skip-remote-check | 升级插件时不检查远程插件是否与现有插件匹配 | 低 | 在强制升级时可以跳过远程插件的匹配检查,但可能会导致不兼容问题。 |
#!/bin/bash# 设置插件名称
PLUGIN_NAME="your-plugin-name"# 1. 禁用插件
# 在升级插件之前,必须先禁用插件
echo "禁用插件:$PLUGIN_NAME"
docker plugin disable $PLUGIN_NAME# 2. 升级插件
# 升级插件到最新版本,授予所有权限
echo "升级插件:$PLUGIN_NAME"
docker plugin upgrade $PLUGIN_NAME --grant-all-permissions# 3. 重新启用插件
# 升级完成后,重新启用插件
echo "启用插件:$PLUGIN_NAME"
docker plugin enable $PLUGIN_NAME# 4. 验证插件状态
# 检查插件是否正常运行
echo "验证插件状态:"
docker plugin ls