假设我有一个想要标记为0.10.24
的图像(在我的例子中,它是一个包含Node.js 0.10.24的图像)。我使用Dockerfile并执行docker build
,并使用-t
参数提供一个标记来构建该映像。
我希望有一天我会有该镜像的其他版本,所以我将使用另一个标记名重新运行该过程。
到现在为止还好。这工作得很好,一切都很好。
但是,这是问题开始的地方,我也希望总是有最新的图像标记的广告latest
额外。所以我想我需要给同一张图片起两个名字。
我该怎么做呢?我真的需要再次在完全相同的版本上重新运行docker build
吗,但这次使用另一个标记,有没有更好的选择?
发布于 2016-04-04 16:57:58
构建镜像时可以有多个标签:
$ docker build -t whenry/fedora-jboss:latest -t whenry/fedora-jboss:v2.1 .
参考:https://docs.docker.com/engine/reference/commandline/build/#tag-image-t
发布于 2014-11-05 19:00:45
因为ID
将包含构建的输出,所以ID=$(docker build -t creack/node .)
不适用于我。
所以我使用了这个小的BASH脚本:
#!/bin/bash
set -o pipefail
IMAGE=...your image name...
VERSION=...the version...
docker build -t ${IMAGE}:${VERSION} . | tee build.log || exit 1
ID=$(tail -1 build.log | awk '{print $3;}')
docker tag $ID ${IMAGE}:latest
docker images | grep ${IMAGE}
docker run --rm ${IMAGE}:latest /opt/java7/bin/java -version
发布于 2015-07-30 21:42:55
Aaron答案的变体。使用没有临时文件的sed
#!/bin/bash
VERSION=1.0.0
IMAGE=company/image
ID=$(docker build -t ${IMAGE} . | tail -1 | sed 's/.*Successfully built \(.*\)$/\1/')
docker tag ${ID} ${IMAGE}:${VERSION}
docker tag -f ${ID} ${IMAGE}:latest
https://stackoverflow.com/questions/22080706
复制相似问题