如何安装相同版本的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自动构建),因此容器可以使用不同的图像。 如果没有你所期望的, 总是使用一个标签!