当前位置: 首页 > 知识库问答 >
问题:

dockerfile维护的最佳实践?

锺功
2023-03-14

我有一个Dockerfile类似于以下内容:

FROM openjdk:8u151

# others here

我有2个关于基本图像的问题:

通常,我从dockerhub获取它,比如说openjdk: 8u151,我可以从dockerhub的openjdk存储库中获取它。

如果我可以从任何本地docker命令获取所有标签,那么我就不需要访问web来获取标签,真的有点低效率吗?

我是说如果我的基本形象一直在那里?

看看上面的openjdk repo,它是一个官方的repo。

我发现只有8u151供我选择。但我认为在这个过程中应该有很多jdk8发布,所以也应该有很多jdk8图像,比如8u1018u163等。

那么我能猜到维护人员会删除一些openjdk的旧图像吗?如果发生这种情况,我的Dockerfile是如何工作的?我应该总是改变我的基础形象,如果我的上游删除那里的形象?对我来说,维持这样的生活真是太可怕了。

即使openjdk真的只生成一个版本的jdk8。我的困惑仍然无法避免,因为dockerhub确实为用户提供了delete按钮。

最好的做法是什么,请建议,谢谢。

共有1个答案

范鸿畅
2023-03-14

如何获取标签?

请参阅“如何在远程注册表上列出Docker映像的所有标记?”<这个API就足够了

例如,访问:

https://registry.hub.docker.com/v2/repositories/library/java/tags/?page_size=100

基地图像安全吗?

只要将自己构建的映像保存在注册表中(无论是RPPublic映像还是自托管映像),是的:您至少可以基于已创建的映像构建新映像
或者,即使基础映像消失,您仍可以在自己的映像中保留其层,并可以重新标记它(前提是生成缓存可用)
例如,请参见“是否有方法标记docker图像中的前一层或还原提交?”
请参阅“我可以运行docker image的中间层吗?”中的注意事项。

 类似资料:
  • 问题内容: 我有如下内容: 我对基本图片有2个问题: 1.如何获取标签? 通常,我是从dockerhub获得的,也就是说,我可以从dockerhub的openjdk存储库中获得。 如果我可以从任何本地docker命令获取所有标签,那么我不需要访问Web来获取标签,效率真的有点低吗? 2.基本图像安全吗? 我的意思是说我的基本形象是否一直存在? 查看上面的openjdk回购,这是一个官方回购。 我发

  • Docker官方关于Dockerfile最佳实践原文链接地址:https://docs.docker.com/develop/develop-images/dockerfile_best-practices/ Docker 可以通过从 Dockerfile 包含所有命令的文本文件中读取指令自动构建镜像,以便构建给定镜像。 Dockerfiles 使用特定的格式并使用一组特定的指令。您可以在Dock

  • 本附录是笔者对 Docker 官方文档中 Best practices for writing Dockerfiles 的理解与翻译。 一般性的指南和建议 容器应该是短暂的 通过 Dockerfile 构建的镜像所启动的容器应该尽可能短暂(生命周期短)。「短暂」意味着可以停止和销毁容器,并且创建一个新容器并部署好所需的设置和配置工作量应该是极小的。 使用 .dockerignore 文件 使用 D

  • 可维护性 编写可维护性代码很重要,因为开发人员的大部分时间都耗在别人编写的代码上,很少有时间去编写新的代码,开发工作是别人的成果上开展的。那么可维护性代码在这个时候就很重要了,能节约开发人员的大量时间。 什么是可维护性代码 可维护性代码需要遵循以下特点: 可理解性,其它开发人员能接手代码,并能理解其意图和途径。 直观性,代码中的内容一看就能明白,不管多么复杂的操作。 可适应性,代码以一种数据上的变

  • 我目前正在使用带有mgo lib的mongoDB作为Web应用程序,但我不确定我使用它的方式是否是好的。 我初始化db会话并创建获取集合和文档值的变量,因此当我需要查询集合时,我使用该变量进行查询。 像这样: 那么,有没有一个最佳实践,或者这一个很好。。?谢谢

  • 问题内容: 我已经决定,在某些类中,我想拥有受保护的方法,但要对其进行测试。这些方法中的一些是静态的且简短的。因为大多数公共方法都使用了它们,所以以后我可能可以安全地删除测试。但是,为了从TDD方法入手并避免调试,我真的想对其进行测试。 我想到了以下几点: *建议的“ 方法对象”似乎对此过于矫kill过正。 * 从公共方法开始,当更高级别的测试提供了代码覆盖范围时,请将其置于保护状态并删除测试。