假设我有一个我想要标记的图像0.10.24(在我的例子中,它是一个包含Node.js 0.10.24的图像).我使用Dockerfile构建该图像并执行docker build并使用-t参数提供标记.
我希望有一天我会有该图像的其他版本,所以我将重新运行该过程,只需使用另一个标记名称.
到现在为止还挺好.这很好,很好,一切都很好.
但是,这就是问题开始的地方,我还希望latest另外还有最新的图像标记广告.所以我想我需要给同一个图像赋予两个名字.
我该怎么做呢?我是否真的需要重新运行docker build完全相同的版本,但这次使用另一个标签,是否有更好的选择?
Tom*_*mmy 217
构建映像时可以有多个标记:
$ docker build -t whenry/fedora-jboss:latest -t whenry/fedora-jboss:v2.1 .
Run Code Online (Sandbox Code Playgroud)
参考:https://docs.docker.com/engine/reference/commandline/build/#tag-image-t
cre*_*ack 152
获得图像后,即可使用
$ docker tag <image> <newName>/<repoName>:<tagName>
Run Code Online (Sandbox Code Playgroud)
使用creack/node:latest构建和标记图像
$ ID=$(docker build -q -t creack/node .)
Run Code Online (Sandbox Code Playgroud)添加新标签
$ docker tag $ID creack/node:0.10.24
Run Code Online (Sandbox Code Playgroud)您可以使用它并从构建中跳过-t部分
$ docker tag $ID creack/node:latest
Run Code Online (Sandbox Code Playgroud)小智 34
这是我的bash脚本
docker build -t ${IMAGE}:${VERSION} .
docker tag ${IMAGE}:${VERSION} ${IMAGE}:latest
Run Code Online (Sandbox Code Playgroud)
如果您使用重建相同版本,则可以删除未标记的图像
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
Run Code Online (Sandbox Code Playgroud)
要么
docker rmi $(docker images | grep "^<none>" | tr -s " " | cut -d' ' -f3 | tr '\n' ' ')
Run Code Online (Sandbox Code Playgroud)
要么
清理命令:
Docker 1.13引入了清理命令.要删除所有未使用的容器,图像,网络和卷:
docker system prune
Run Code Online (Sandbox Code Playgroud)
或单独:
docker container prune
docker image prune
docker network prune
docker volume prune
Run Code Online (Sandbox Code Playgroud)
Aar*_*lla 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
Run Code Online (Sandbox Code Playgroud)
在构建命令期间为 docker 文件添加标签:
docker build -t image_name:tag_name .
Run Code Online (Sandbox Code Playgroud)
否则它会latest自动为你的 docker 镜像添加标签。
只需从以下位置获取IDdocker images:
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
Run Code Online (Sandbox Code Playgroud)
需求没有临时文件并提供完整的构建输出.您仍然可以将其重定向到/dev/null日志文件.
亚伦答案的变化.使用没有临时文件的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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
184384 次 |
| 最近记录: |