使用' previous' Docker的图像版本

时间:2016-10-19 20:33:05

标签: docker

我正在尝试使用Docker,并且无法理解一件事 - docker标签。我将展示一个例子:

我想使用,比如openjdk:8u91-jdk,因为我想构建并测试我们在生产中的版本。但是,当我尝试从此图片创建容器时,无法下载它,因为它无法在Dockerhub上找到。

同样,假设我现在使用最新的openjdk:8u102-jdk,并为此升级生产系统。在某些时候,必然会有图像更新,突然我的构建将停止工作?

我不想只使用openjdk:8-jdk,因为我不知道将用于构建的内容。

我想我错过了什么。如何使用特定的先前版本的图像?

2 个答案:

答案 0 :(得分:0)

您可以接受Dockerfile并更新JAVA_VERSION和JAVA_DEBIAN_VERSION环境变量以反映您要使用的OpenJDK版本,然后自行构建。

答案 1 :(得分:0)

所有标记都指向某组文件系统层,这意味着底层内容可以随时更改。这是其他容器化供应商和appC规范正在努力解决的问题之一,通常是使用类似于git commit hash的东西。

但是,在管理良好的公共Docker容器存储库中,大多数时候会有一些抽象无法使用静态标记来引用。

OpenJDK repo的标签看,你似乎很幸运。

标签(通常)的结构如下:

  • latest :指向最新版本的最新稳定版本。 这通常是动态的

  • 8-alpine :指向版本8的最新稳定版本,使用Alpine Linux作为发行版这通常是动态的

  • 8u92-alpine :指向版本8的特定版本。通常只会重建以包含安全补丁

这意味着如果你想绑定到8u92-alpine,你所要做的就是在使用你的docker命令时引用那个特定的标签(openjdk:8u92-alpine)。

所有这一切,如果你真的需要8u91,即使openjdk repo中没有标记的版本,你仍然可以查看Dockerfile for 8u91 ,建立它,并自己推动它。