docker - 用于 docker 图像的 Skopeo 工具 - 重新标记
问题描述
我正在使用 linux 机器上的 Skopeo 工具下载 docker 映像 - 成功运行
skopeo copy --src-creds uname:pwd docker://url/image:tag dir:/home/image
我正在尝试更改此图像的标签。当前图像标签是“最新”,需要更改为“新”
有什么方法可以使用skopeo 工具重新标记此图像,然后使用新标记上传到注册表。
请注意:Docker 不允许安装在 linux 机器上,因为它需要 root 用户,而我们的项目未经授权。
我正在尝试以下活动顺序
- 从存储库下载带有标签“最新”的图像 - 工作
- 将图像的标签更改为“新”并上传回存储库 - 工作
- 下载带有新标签“新”的图像 - 失败并出现错误。
PFB 命令按顺序排列
skopeo copy --src-creds name:pwd docker://url/alpine:latest dir:/home/alpine
skopeo copy --dest-creds uname:pwd dir:/home/alpine docker://url/alpine:new
skopeo copy --src-creds uname:pwd docker://url/alpine:new dir:./alpinenew
**FATA[0004] Error initializing source docker://url/alpine:new: Error reading manifest new in url/alpine: manifest unknown: manifest unknown**
如何修复此错误。
解决方案
您不需要“重新标记”图像。在将图像上传到远程存储库时设置标签。例如,要将图像上传为myusername/myimagename:sometag
,我可以运行:
skopeo copy dir:/home/image docker://myusername/myimagename:sometag
为了说明这一点,我可以alpine
像这样下载图像:
skopeo copy docker://alpine dir:./alpine
然后使用不同的名称和标签将其上传到我自己的命名空间中,如下所示:
skopeo copy dir:alpine docker://larsks/alpinetest:foo
这似乎工作得很好。
然后我可以下载新图像以验证它是否有效:
$ skopeo copy docker://larsks/alpinetest:foo dir:./alpinetest
Getting image source signatures
Copying blob e6b0cf9c0882 done
Copying config cc0abc535e done
Writing manifest to image destination
Storing signatures
在两个位置使用相同的图像名称就可以正常工作:
skopeo copy docker://larsks/alpinetest:foo dir:./alpinetest
skopeo copy dir:./alpinetest docker://larsks/alpinetest:bar
推荐阅读
- biztalk - BizTalk 核心格式:多余但都符合标准还是“保持愚蠢”?
- javascript - 如何将 socket.io 与来自控制器的 express-session 一起使用
- javascript - 使用模板文字创建模态框时不会关闭
- python - 为什么结果从无头 webdriver 到 heded webdriver 不同?
- vue.js - 寻找一种在 Vuetify 中链接两个 v-autocomplete 框的方法
- c# - “Enter”键在 WPF 中做奇怪的事情
- html - 引用一个 ID
- 在 CSS 中不应用任何内联样式。试图理解这背后的原因
- flutter - 使非矩形区域可拖动
- google-cloud-platform - 如果账单高于阈值,我如何创建一个 firebase 函数来禁用我的应用程序的账单?
- python - python中的工厂模式 - 单独的类或函数包装?