如何在Dockerfile中编写FROM语句,以从特定的Major版本中获取最新映像。 假设有一个应用程序当前具有三个主要版本:v1.7,v2.5,v3.0.5,而我想始终拥有最新版本的映像v2。如果我输入Dockerfile语句:
String s = "Temperature: 98.6°F (37.0°C)";
String t = Pattern.compile("[^ -~]").matcher(s)
.replaceAll(r -> String.format("\\\\u%04x", (int) r.group().charAt(0)));
System.out.println(t);
然后我将获得构建版本3.0.5,因为它是最新版本。如果我放:
FROM imagename:latest
然后我将获得准确的2.5版,但是一旦2.6版可用,就无法使用此语句更新映像。
如何设置FROM语句,该语句将始终获得最新的版本2更新,而不会妨碍向后兼容性并坚持使用该主要版本2。
答案 0 :(得分:0)
Docker映像标签(包括Dockerfile FROM
行和docker run
映像)始终是完全匹配的。必然的结果是,一旦Docker相信它在本地有一个特定的映像,除非明确指示,否则它不会尝试再次获取它。
许多常见的Docker映像都有一个约定,即在多个标签下发布同一映像,这反映了您的建议。例如,在撰写本文时,对于standard python
image,python:latest
,python:3
,python:3.7
,python:3.7.0
和python:3.7.0-stretch
,它们都指向相同的图像。如果您说FROM python:3
,则会得到这张图片。但是,如果您已经拥有该映像,并且发布了Python 3.8,并且在未先显式执行docker pull
的情况下进行了重建,则您将使用已经拥有的映像(Python 3.7)。如果您做了docker pull python:3
,则将获得更新的图像,但必须知道要这样做(或告诉CI工具为您完成)。