3个版本
0.2.1-beta.2 | 2021年12月14日 |
---|---|
0.2.0 | 2021年12月14日 |
#498 在 Unix API
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
工作原理
- 调用 "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 |
- 按镜像名称分组列表。
镜像名称 | 标签 |
---|---|
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 |
- 按规范/快照版本分组列表。
镜像名称 | 标签 |
---|---|
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 |
- 按版本号排序。
镜像名称 | 标签 |
---|---|
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 |
- 应用以下规则。
对于快照版本,保留最新版本。对于规范版本,保留三个最新版本。您可以通过参数修改保留计数。
镜像名称 | 标签 | 删除 |
---|---|---|
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 | 保留 |
- 调用 "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