当前位置: 首页 > 面试题库 >

Dockerfile维护的最佳实践?

岳枫
2023-03-14
问题内容

我有Dockerfile如下内容:

FROM openjdk:8u151

# others here

我对基本图片有2个问题:

1.如何获取标签?

通常,我是从dockerhub获得的,也就是说openjdk:8u151,我可以从dockerhub的openjdk存储库中获得。

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

2.基本图像安全吗?

我的意思是说我的基本形象是否一直存在?

查看上面的openjdk回购,这是一个官方回购。

我发现只有8u151剩下的可供我选择。但我认为应该有大量的jdk8释放过程中,所以应该也有很多的jdk8图像有,像8u1018u163等等。

因此,我可以猜测维护者将为此删除一些旧图像openjdk吗?那如果发生这种情况,我该如何Dockerfile工作?如果我的上游删除那里的形象,我应该总是改变我的基本形象?对我来说维持这种事情真是太糟糕了。

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

最佳做法是什么,请提出建议,谢谢。


问题答案:

如何获得标签?

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

例如,访问:

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

基本图像安全吗?

是的,只要您将自己构建的映像保存在注册表中(即通用的或自托管的),就可以:您将至少能够基于已完成的映像来构建新映像。
或者,即使基本映像消失了,您仍然可以在自己的映像中保留其图层,并且可以对其进行重新标记(前提是可用的构建缓存)。



 类似资料:
  • 我有一个类似于以下内容: 我有2个关于基本图像的问题: 通常,我从dockerhub获取它,比如说,我可以从dockerhub的openjdk存储库中获取它。 如果我可以从任何本地docker命令获取所有标签,那么我就不需要访问web来获取标签,真的有点低效率吗? 我是说如果我的基本形象一直在那里? 看看上面的openjdk repo,它是一个官方的repo。 我发现只有供我选择。但我认为在这个过

  • 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过正。 * 从公共方法开始,当更高级别的测试提供了代码覆盖范围时,请将其置于保护状态并删除测试。