Rus*_*ell 6 continuous-delivery docker dockerhub
有没有办法阻止图像上传到docker hub与现有图像相同的标签?我们的用例如下.
我们使用docker-compose文件部署到生产环境,并将图像标记作为版本号.为了支持回滚到先前的环境和幂等部署,必须使某个标记的泊坞窗图像始终引用相同的图像.
但是,docker hub允许使用与现有图像相同的标签上载图像(它们覆盖旧图像).这完全打破了对图像进行版本控制的想法.
我们目前有一些解决方法,包括我们的构建脚本拉动图像的所有版本,并查看标签以检查覆盖不会发生等等,但感觉必须有更好的方法.
如果docker hub不支持这个,有没有办法在没有docker hub的情况下进行docker部署?
假设您有一个本地构建系统来构建 Docker 映像:您可以在标签中包含本地构建作业的构建号。这样您就可以保证您的要求:
...某个标记的 docker 镜像必须始终引用相同的镜像。
当您的本地构建自动推送到 docker hub 时,可以确保每次推送都会推送带有唯一标签的镜像。
标签系统无法防止图像被覆盖; 你必须提出自己的流程来处理这个问题(而h3nrik的答案就是一个例子).
但是,您可以使用摘要.在注册表的新v2中,所有图像都被赋予校验和,称为摘要.如果图像或其任何基础层发生变化,摘要将发生变化.因此,如果您通过摘要拉取,您可以绝对确定该图像的内容未随时间变化并且图像未被篡改.
通过摘要拉取看起来像:
docker pull debian@sha256:f43366bc755696485050ce14e1429c481b6f0ca04505c4a3093dfdb4fafb899e
Run Code Online (Sandbox Code Playgroud)
你做的时候应该得到摘要docker push.
现在,我同意通过摘要拉动有点笨拙,所以你可能想要建立一个简单跟踪摘要和标签的系统,并且可以验证图像没有改变.
在未来,这种情况可能改善,像工具公证签署图像.此外,您可能希望使用标签来存储元数据,例如git hash或内部版本号.
| 归档时间: |
|
| 查看次数: |
4535 次 |
| 最近记录: |