如何在Docker中创建命名和最新标签?

假设我有一个图像,我想标记为0.10.24(在我的情况下,它是一个包含Node.js 0.10.24的图像)。我使用Dockerfile并执行docker build并使用-t参数提供一个标记来构建该图像。

我希望有一天我将拥有该图像的其他版本,因此我将重新运行该过程,只是使用另一个标记名。

到目前为止,一切顺利。这工作得很好,一切都很好。

但是,这就是问题开始的地方,我还想总是将最新的图像标记为ad__abc0。所以我想我需要给同一个图像起两个名字。

我怎么做呢?我真的需要在完全相同的版本上重新运行docker build,但这次使用另一个标签,是有更好的选择吗?

354170 次浏览

一旦你有了你的图像,你就可以使用

$ docker tag <image> <newName>/<repoName>:<tagName>
  1. 用creack/node:latest构建并标记图像

    $ ID=$(docker build -q -t creack/node .)
    
  2. Add a new tag

    $ docker tag $ID creack/node:0.10.24
    
  3. You can use this and skip the -t part from build

    $ docker tag $ID creack/node:latest
    

ID=$(docker build -t creack/node .)不适合我,因为ID将包含构建的输出。

所以我使用这个小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

这是我的bash脚本

docker build -t ${IMAGE}:${VERSION} .
docker tag ${IMAGE}:${VERSION} ${IMAGE}:latest

然后可以删除未标记的图像,如果您重新构建了相同的版本

docker rmi $(docker images | grep "^<none>" | awk "{print $3}")

link

docker rmi $(docker images | grep "^<none>" | tr -s " " | cut -d' ' -f3 | tr '\n' ' ')

清理命令:

Docker 1.13引入了清理命令。删除所有未使用的容器、映像、网络和卷:

docker system prune

或个人:

docker container prune
docker image prune
docker network prune
docker volume prune

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

只是docker images中的grep ID:

docker build -t creack/node:latest .
ID="$(docker images | grep 'creak/node' | head -n 1 | awk '{print $3}')"
docker tag "$ID" creack/node:0.10.24
docker tag "$ID" creack/node:latest

需要无临时文件并给出完整构建输出。您仍然可以将其重定向到/dev/null或日志文件。

在构建映像时可以有多个标记:

$ docker build -t whenry/fedora-jboss:latest -t whenry/fedora-jboss:v2.1 .

参考:https://docs.docker.com/engine/reference/commandline/build/#tag-image-t

这很简单,你只需要遵循以下步骤-

因此,要在Docker中创建和标记图像,我们可以使用以下命令

首先运行下面的命令取出码头工人的身份证

docker ps

复制→的名字

docker build -t dockerId/Name of your image you want:latest .

我用 docker build -t condescending_greider/newdoc:latest . < / p >

谢谢你的宝贵时间

在build命令中给docker文件添加标签:

docker build -t image_name:tag_name .

否则它会自动给你的图像latest标签。