zoukankan      html  css  js  c++  java
  • docker registry 空间清理手册

    Docker registry是docker私有镜像仓库。长期运行会存在一些遗留的镜像,清理时可以从两个方面去清理:

    1. 镜像标签为none的镜像,是被覆盖的镜像,不会再被拉取到;
    2. 清理多次重复构建,镜像层数较高的冗余镜像。

    本次操作使用的是registry:2的镜像搭建的私有仓库,并没有做特殊的改动。其它版本可能需要修改storage配置中增加delete=true配置项,详细参考下方参考链接。

    1. 清理指定none镜像

    下载清理脚本

    curl https://raw.githubusercontent.com/burnettk/delete-docker-registry-image/master/delete_docker_registry_image.py | sudo tee /usr/local/bin/delete_docker_registry_image >/dev/null
    sudo chmod a+x /usr/local/bin/delete_docker_registry_image
    

    【可选】安装python,如服务器已安装,直接跳过这一步

    yum install -y python3
    

    映射出镜像仓库在宿主机的挂载地址

    • 我部署的时候,是使用挂载项 registry_data:/var/lib/registry
    • 那么我需要找到宿主机的registry_data的实际地址
    • 使用docker volume ls 找到registry_data
    • 找到实际地址docker inspect ${volume_id},可以看到是/var/lib/docker/volumes/lcdp-swarm-deploy_registry-data/_data
    • 综上,我得到映射地址,执行下面命令声明环境变量
    export REGISTRY_DATA_DIR=/var/lib/docker/volumes/lcdp-swarm-deploy_registry-data/_data/docker/registry/v2
    

    清理指定的none镜像,如果不知道要清理哪些镜像,可以看第二种方法的内容,找出哪个镜像占用比较大

    python3 delete_docker_registry_image -i ${image_name} -u
    

    执行垃圾回收,清理二进制数据

    docker exec -t ${container_name} registry garbage-collect /etc/docker/registry/config.yml
    

    2. 暴力清理指定镜像

    # 进入容器
    docker exec -it ${container_name} sh
    
    # 进入容器后的操作
    # 查看镜像总占用空间
    du -sch /var/lib/registry
    # 分析镜像层数较多的镜像,仅显示占用前10的镜像名称
    registry garbage-collect --dry-run /etc/docker/registry/config.yml  awk -F : '{print $1}' | sort | uniq -c | sort -rn -k1 | head -10 | grep -v "redis|jdk|php|mysql|nginx|apache|zk|elastic"
    # 从上方的输出,酌情考虑哪些镜像需要删除
    cd /var/lib/registry/docker/registry/v2/repositories
    ls
    # 酌情使用rm 删除想要删除的镜像文件夹
    # 使用垃圾回收,清理二进制空间
    registry garbage-collect /etc/docker/registry/config.yml
    
    # 再次查看占用空间,看清理是否有效果
    du -sch /var/lib/registry
    

    参考链接

  • 相关阅读:
    从技术走向管理
    一位大龄程序员所经历的面试的历炼和思考
    从技术谈到管理,把系统优化的技术用到企业管理
    Xamarin.iOS 开发 1通过“与 Mac 配对”进行 Xamarin.iOS 开发
    net 开源工作流比较及应用
    net core体系-UWP
    net 架构-5 ABP框架的Web API调用类在Winform项目中的使用
    net 架构-4ABP框架的Web API调用类的封装和使用
    MVC后台的几种跳转方法
    sqlserver存储过程杀掉数据库中死锁
  • 原文地址:https://www.cnblogs.com/xiaojiluben/p/15497837.html
Copyright © 2011-2022 走看看