我有一个Dockerfile
如下:
FROM openjdk:8u151
# others here
我有2个关于基本图像的问题:
通常,我从dockerhub得到它,让我们说openjdk:8u151
,我可以从dockerhub's openjdk repository得到它。
如果我可以从任何本地docker命令获取所有标签,那么我不需要访问web来获取标签,效率真的有点低吗?
我的意思是如果我的基本图像总是存在吗
看看上面的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?”中的警告。