#docker-image #remove #keep #list #version #obsolete #latest-version

app remove_docker_images

删除过时的Docker镜像

3个版本

0.2.1-beta.22021年12月14日
0.2.0 2021年12月14日

#498Unix API

Apache-2.0

29KB
553

删除Docker镜像

删除过时的Docker镜像。

先决条件

安装Docker。

支持的标签语法

以下正则表达式后的标签受支持

^[vV]?(\d{1,5})(\.\d{1,5})?(\.\d{1,5})?(-.*)?$

示例:支持的标签

1.0
1.0-SNAPSHOT
v2.10.1
2.0-BR291-SNAPSHOT
8-jdk

示例:不支持的标签

123456.1 (major version has more than 5 digits)
ver1.2

规范版本

如果标签与以下正则表达式匹配,则被视为规范(非快照)版本。

^[vV]?(\d{1,5})(\.\d{1,5})?(\.\d{1,5})?

快照版本

如果标签以"-SNAPSHOT"结尾,则被视为快照版本。

分支

如果跟在后面的字符串不是"-SNAPSHOT",则被视为分支。

示例:分支:BR102(规范版本)

1.4-BR102

示例:分支:BR102(快照版本)

1.4-BR102-SNAPSHOT

工作原理

  1. 调用 "docker images" 获取Docker镜像列表。
镜像名称 标签
foo/myapp 1.0
foo/myapp 1.0-SNAPSHOT
bar/app 1.2
foo/myapp 1.1
foo/myapp 1.1-SNAPSHOT
foo/myapp 1.2
bar/app 2.2
foo/myapp 1.3
  1. 按镜像名称分组列表。
镜像名称 标签
foo/myapp 1.0
foo/myapp 1.0-SNAPSHOT
foo/myapp 1.3
foo/myapp 1.1
foo/myapp 1.1-SNAPSHOT
foo/myapp 1.2
bar/app 2.2
bar/app 1.2
  1. 按规范/快照版本分组列表。
镜像名称 标签
foo/myapp 1.0-SNAPSHOT
foo/myapp 1.1-SNAPSHOT
foo/myapp 1.0
foo/myapp 1.3
foo/myapp 1.1
foo/myapp 1.2
bar/app 2.2
bar/app 1.2
  1. 按版本号排序。
镜像名称 标签
foo/myapp 1.0-SNAPSHOT
foo/myapp 1.1-SNAPSHOT
foo/myapp 1.0
foo/myapp 1.1
foo/myapp 1.2
foo/myapp 1.3
bar/app 1.2
bar/app 2.2
  1. 应用以下规则。
    对于快照版本,保留最新版本。对于规范版本,保留三个最新版本。您可以通过参数修改保留计数。
镜像名称 标签 删除
foo/myapp 1.0-SNAPSHOT 删除
foo/myapp 1.1-SNAPSHOT 保留
foo/myapp 1.0 删除
foo/myapp 1.1 保留
foo/myapp 1.2 保留
foo/myapp 1.3 保留
bar/app 1.2 保留
bar/app 2.2 保留
  1. 调用 "docker rmi" 删除镜像

参数

  • --version
    显示工具版本。

  • --dry-run
    不调用 "docker rmi",而是只显示将要删除的镜像。

  • --keep [count]
    指定规范版本的保留计数。默认为3。

  • --keep-snapshot [count]
    指定快照版本的保留计数。默认为1。

  • --repository-type [type]
    指定Docker镜像仓库类型。可以使用 'docker' 和 'ibmcr'。'docker' 表示Docker镜像仓库。'ibmcr' 表示IBM Cloud Registry。默认为 'docker'。

IBM Cloud Registry

如果您想使用IBM Cloud Registry,请指定 '--repository-type ibmcr'。在这种情况下,您需要提前登录IBM Cloud Registry。

$ ibmcloud login
$ ibmcloud cr login
$ remove_docker_images --repository-type ibmcr

如果您想在CI服务器等非交互式环境中执行它,可以使用API密钥。

$ export IBMCLOUD_API_KEY=YOUR_CONTAINER_REGISTRY_APIKEY
$ ibmcloud login
$ ibmcloud cr login
$ remove_docker_images --repository-type ibmcr

您可以在Web控制台中创建API密钥

  • 管理 => IAM => 服务ID => 创建
  • 输入名称并点击创建。
  • 点击访问策略。
  • 点击分配访问权限。
  • 选择IAM服务。
  • 点击下拉菜单 '无访问' 并选择容器注册库。
  • 在“服务访问”中,检查读取器和写入器。
  • 点击添加。
  • 点击分配。
  • 点击API密钥。
  • 点击创建。
  • 输入名称并点击创建。
  • 现在,您可以复制API密钥。

二进制

Linux(x86_64): 0.2.0

依赖项

~2.5–3.5MB
~60K SLoC