如何安装相同版本的Docker镜像?

在机器AI上安装了docker image FOO / BAR。 如何查询该映像的版本,以及如何将相同的版本安装到机器B?

请注意,在机器上,BI不需要FOO / BAR的最新可用版本,但与机器A的版本相同。我不想对机器A上的图像进行本地修改。

Docker使用标签或摘要来区分不同版本的图像。 当既不指定标签也不指定摘要时,所有的Docker命令都假定你想使用latest的默认标签。 但是你总是可以更具体。

假设图像来自注册表FOO并称为BAR ,您可以通过两种方式获取相同版本的图像:通过标记或摘要。 你只能使用标签,如果你知道它是唯一的,不能重复使用。 当使用内部版本号或Git哈希值作为标签时,通常会出现这种情况,但是如果您想绝对确定,请使用摘要。

在机器A上,运行docker images --digests 。 寻找FOO/BAR及其摘要(以sha:开头)。

在机器B上,运行以下命令并将{digest}替换为来自机器A的摘要:

 docker pull FOO/BAR@{digest} 

这是一个例子:

 docker pull FOO/BAR@sha256:e4957dfd892f656ae672dfa03eb7a73f1c47bd24fc95f2231fc5ac91a76092a0 

这将下载相同版本的机器A到机器B.因为它来自注册表,这是一个新鲜的副本,没有任何修改。

使用标签!

docker image支持标签,通常用作版本号。 在构建图像时,您可以指定一个标签:

 docker build -t myimage:v0.1 . 

然后使用相同的图像很容易:

 docker run -d myimage:v0.1 entrypoint.sh 

如果你不指定标签,并且一切正常。 由于docker使用latest默认标记,在更新和保持同步时可能会很烦人。

latest图像可以随时更改(通常使用CI / CD自动构建),因此容器可以使用不同的图像。 如果没有你所期望的, 总是使用一个标签!