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

ui7jx7zq  于 2022-12-11  发布在  Docker
关注(0)|答案(8)|浏览(160)

假设我有一个图像,我想标记为0.10.24(在我的例子中,它是一个包含Node.js 0.10.24的图像)。我使用一个Dockerfile和执行docker build并通过使用-t参数提供一个标记来构建该图像。
我希望有一天我会有该图像的其他版本,所以我将重新运行该过程,只是使用另一个标记名。
到目前为止,一切都很好。这很好,一切都很好。
但是,这也是问题的开始,我还希望总是有最新的图像标记为广告latest
我该怎么做?我真的需要在完全相同的版本上重新运行docker build吗?但是这次使用另一个标签,有没有更好的选择?

gr8qqesn

gr8qqesn1#

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

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

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

yhived7q

yhived7q2#

有了图像后,您可以使用

$ docker tag <image> <newName>/<repoName>:<tagName>

1.使用creack/node:latest构建并标记映像

$ ID=$(docker build -q -t creack/node .)

1.添加新标记

$ docker tag $ID creack/node:0.10.24

1.您可以使用此命令并跳过build中的-t部分

$ docker tag $ID creack/node:latest
efzxgjgh

efzxgjgh3#

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

4urapxun4#

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
kqlmhetl

kqlmhetl5#

只需docker images获取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或日志文件。

50few1ms

50few1ms6#

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
ktca8awb

ktca8awb7#

要在生成命令期间为Docker文件给予标记,请执行以下操作:

docker build -t image_name:tag_name .

否则,它会自动为您Docker映像给予latest标记。

mspsb9vt

mspsb9vt8#

Hye这是非常容易的,你只需要按照以下步骤-
因此,要在Docker中创建和标记图像,我们可以使用以下命令
首先通过运行以下命令取出Docker id

docker ps

复制-〉名称

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

我用docker build -t condescending_greider/newdoc:latest .
感谢您抽出宝贵时间

相关问题