我有一个Dockerfile
,如下所示:
FROM openjdk:8u151
# others here
我对基本图片有2个问题:1.如何获取标签?
通常,我是从dockerhub获得的,比如
openjdk:8u151
,我可以从dockerhub's openjdk repository获得。如果我可以从任何本地docker命令获取所有标签,那么我不需要访问Web来获取标签,效率真的有点低吗?
2.基本图像安全吗?
我的意思是说我的基本形象是否一直存在?
查看上面的openjdk回购,这是一个官方回购。
我发现只剩下
8u151
供我选择。但是我认为在此过程中应该发布很多jdk8
,因此那里也应该发布很多jdk8
图片,例如8u101
,8u163
等。所以我猜维护者会删除
openjdk
的一些旧图像吗?然后,如果发生这种情况,我的
Dockerfile
如何工作?如果上游删除那里的图片,我应该总是更改我的基本图片吗?对我来说维持这种事情真是太糟糕了。即使
openjdk
实际上只生成了一个jdk8
版本。我的困惑仍然无法避免,因为dockerhub
确实为用户提供了delete
按钮。最佳做法是什么,请提出建议,谢谢。
最佳答案
参见“How to list all tags for a Docker image on a remote registry?”。
API就足够了
例如,访问:
https://registry.hub.docker.com/v2/repositories/library/java/tags/?page_size=100&page=2
是的,只要您将自己的构建镜像保存在注册表中(即通用的或自托管的),就可以:您将至少能够基于已完成的构建新镜像。
或者,即使基本镜像消失了,您仍然可以在自己的镜像中保留其图层,并且可以对其进行重新标记(前提是可用的构建缓存)。
例如,参见“Is there a way to tag a previous layer in a docker image or revert a commit?”。
请参见“can I run an intermediate layer of docker image?”中的警告。
关于docker - Dockerfile维护的最佳实践?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49334897/