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

时间:2014-02-27 21:22:13

标签: docker tags

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

我希望有一天我会有该图片的其他版本,所以我将重新运行该过程,只需使用另一个标记名称。

到目前为止,这么好。这很好,很好,一切都很好。

但是,这就是问题开始的地方,我还希望始终拥有最新的图片标记广告latest。所以我想我需要给同一个图像分两个名字。

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

6 个答案:

答案 0 :(得分:189)

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

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

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

答案 1 :(得分:147)

获得图像后,可以使用

$ docker tag <image> <newName>/<repoName>:<tagName>
  1. 使用creack / node:latest

    构建和标记图像
    $ ID=$(docker build -q -t creack/node .)
    
  2. 添加新标记

    $ docker tag $ID creack/node:0.10.24
    
  3. 您可以使用此功能并跳过构建

    中的-t部分
    $ docker tag $ID creack/node:latest
    

答案 2 :(得分:31)

这是我的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

答案 3 :(得分:19)

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

答案 4 :(得分:5)

亚伦答案的变化。 使用没有临时文件的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

答案 5 :(得分:0)

嘿,这很简单,您只需要按照以下步骤操作即可 -

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

首先通过运行以下命令取出您的 Docker id

docker ps 

复制 -> 名称

docker build -t dockerId/Name of your image you want:latest .
<块引用>

对我来说我用 docker build -t condescending_greider/newdoc:latest .

感谢您的时间