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

时间:2017-07-24 15:04:19

标签: docker

在机器A上我安装了泊坞窗图像FOO / BAR。如何查询该图像的版本,以及如何将相同版本安装到机器B?

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

2 个答案:

答案 0 :(得分:1)

Docker使用标记或摘要来区分不同版本的图像。当既未指定标记或摘要时,所有Docker命令都假定您要使用默认标记+-----+---------+----------+ | id| weights| indices| +-----+---------+----------+ |11830| [1, 1]| [8, 28]| |11113| [1, 3]| [3, 2]| | 1081| [1]| [3]| | 2654| [1]| [3]| |10633| [1]| [3]| |11351| [1]| [12]| | 2737| [1]| [26]| | 6590| [1]| [2]| +-----+---------+----------+ 。但你总是可以更具体。

假设图像来自注册表import org.apache.spark.mllib.linalg.{Vector, Vectors} import org.apache.spark.sql.functions.udf def toSparseVector: ((Array[Int], Array[BigInt]) => Vector) = {(a1, a2) => Vectors.sparse(1000, a1, a2.map(x => x.toDouble))} val udfToSparseVector = udf(toSparseVector) val dfWithSparseVector = dfWithLists.withColumn("SparseVector", udfToSparseVector($"indices", $"weights")) 并且被称为latest,有两种方法可以提取相同版本的图像:标记或摘要。如果您知道它是唯一且不重复使用,则只能使用该标记。使用内部版本号或Git哈希作为标记时通常会出现这种情况,但如果您想绝对确定,请使用摘要。

在计算机A上,运行FOO。查找BAR及其摘要(以docker images --digests开头)。

在计算机B上,运行以下命令并将FOO/BAR替换为计算机A的摘要:

sha:

这是一个看起来如何的例子:

{digest}

这会将机器A上可用的相同版本下载到机器B.由于它来自注册表,因此它是一个没有任何修改的新副本。

答案 1 :(得分:0)

使用标记!

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

docker build -t myimage:v0.1 .

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

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

如果您没有指定标签,一切正常。因为docker使用默认标记latest,这在更新和保持同步时会很烦人。

latest图像可以随时更改(通常使用CI / CD自动构建),因此容易使用的容器可以使用不同的图像。如果没有您的预期,始终使用标记!