Moh*_*ari 5 automation continuous-deployment docker
我在 gitlab 的项目中有一个 ci/cd 自动化,在将我的代码推送到 master 分支后,gitlab 运行程序在我的服务器上创建一个新的 docker 映像,并将最新提交哈希设置为该映像上的标签,并使用新映像重新创建容器。一段时间后,有很多未使用的图像,我想自动删除它们。
我手动删除旧图像。
这是我的 Makefile
NAME := farvisun/javabina
TAG := $$(git log -1 --pretty=%h)
IMG := ${NAME}:${TAG}
LATEST := ${NAME}:latest
app_build:
docker build -t ${IMG} -f javabina.dockerfile . && \
docker tag ${IMG} ${LATEST}
app_up:
docker-compose -p farvisun-javabina up -d javabina
Run Code Online (Sandbox Code Playgroud)
毕竟,我想要一个简单的 bash 代码或其他工具来删除未使用的图像,例如保留 3 个最新图像,或保留过去 2 天的构建,并删除其他图像。
如果您愿意保留单个映像,则可以使用docker image prune -f,这将删除除与容器关联的映像之外的所有映像,因此,如果您在容器运行时运行此命令,它将删除其余的映像。
不要忘记docker system prune经常运行以进一步减少存储使用。
在您需要保留多张图像的情况下,您可以尝试以下操作:
#!/bin/bash
for tag in $(docker image ls | sed 1,4d | awk '{print $3}')
do
docker image rm -f $tag
done
Run Code Online (Sandbox Code Playgroud)
第一行将列出所有 docker 镜像,从列表中删除您要保留的前 3 个镜像,然后仅选择具有镜像 ID 的列。然后,对于每个 ID,我们删除图像。
如果要删除更多,请将 4d 更改为其他数字。请注意,第一行是标题,因此必须始终将其删除。
如果您想先通过标签过滤图像,您可以创建自己的过滤器。
小智 0
您可以在编译机器中安排(例如每天一次或每周一次)“docker image prune”命令。 https://docs.docker.com/engine/reference/commandline/image_prune/
| 归档时间: |
|
| 查看次数: |
13331 次 |
| 最近记录: |