Docker images 常用shell脚本

这个是标题

shell脚本学习

1)拉取镜像根据镜像名和tag保存在本地

docker_pull_save.sh.

shell 复制代码
#!/bin/bash  
 
# 定义镜像列表  
images_list=$(cat "image_list.txt")  
  
# 遍历镜像列表  
for image in $images_list  
do  
  # 提取镜像名和标签  
  image_name=$(echo $image | awk -F ':|/' '{print $3}')  
  image_tag=$(echo $image | awk -F ':|/' '{print $4}')  
  
  # 拉取镜像  
  docker pull "$image"  
  
  # 保存镜像到本地目录  
  docker save -o "$image_name-$image_tag.tar" "$image"
  docker rmi "$image"
done

其中 image_list示例如下:

txt 复制代码
harbor.io/project/images_name1:tag1
harbor.io/project/images_name2:tag2

2) 删除Linux机器本机的镜像

shell 复制代码
#!/bin/bash

# 获取所有Docker镜像列表
images=$(docker images)

# 对每个镜像进行处理
for image in ${images[@]}; do
  # 分割镜像名和标签
  name=$(echo "$image" | awk '{print $1}')
  tag=$(echo "$image" | awk '{print $2}')

  # 删除该镜像的全部标签
  docker rmi -f $name:$tag || true
  
  # 删除无标签镜像
  if [ -z "$tag" ]; then
    docker rmi -f $name || true
  fi
done

3) docker load并且修改镜像的域名和项目名push到新的harbor

shell 复制代码
#!/bin/bash  
 
# 获取save的镜像包名称 
images_tar_list=$(ls -h |grep tar.gz)  

# 遍历镜像列表  
for image in $images_tar_list
do
  docker load -i $image
done

# 定义新的镜像harbor和项目
new_harbor="new_harbor.io/new_project/"
# 获取镜像名和tag
images_tag_push_list=($(docker images |grep tag | awk '{print $1":"$2'}))

# 遍历镜像列表  
for image in "${images_tag_push_list[@]}"
do  
  # 提取镜像名和标签  
  image_name=$(echo $image | awk -F ':|/' '{print $3}')  
  image_tag=$(echo $image | awk -F ':|/' '{print $4}')  
  
  new_image=$new_harbor$image_name:$image_tag
  # 打tag 
  docker tag "$image"  $new_image
  # 推送镜像
  docker push $new_image
  # 删除拉取的镜像
  docker rmi $new_image
  docker rmi "$image"
done
相关推荐
运维行者_14 小时前
企业无线网络监控的挑战与智能化演进趋势
大数据·运维·服务器·网络·数据库
2603_9552797015 小时前
Cursor + GitOps:自动化运维新姿势
运维·自动化
Waay15 小时前
面试口述版:个人对 Prometheus 完整理解
运维·学习·云原生·面试·职场和发展·kubernetes·prometheus
三84415 小时前
文件查找/文件压缩/解压缩
linux·运维·服务器
小猪写代码16 小时前
Linux 管道(Pipeline)作业
linux·运维·服务器
桌面运维家16 小时前
如何用半缓存云桌面将服务器硬盘容量扩展至本地终端?
运维·服务器·缓存
激情的学姐16 小时前
【大型网站技术实践】初级篇:借助Nginx搭建反向代理服务器
运维·nginx
ai_coder_ai16 小时前
编写自动化脚本,在自己后端服务中使用Open Api进行设备相关操作
java·运维·自动化
spider_xcxc18 小时前
Redis 数据库高质量实践指南(一)
运维·数据库·redis·oracle·云计算
2501_9437823518 小时前
【共创季稿事节】摇骰子:用 ArkTS 实现随机动画与交互反馈
运维·nginx·交互·harmonyos·鸿蒙·鸿蒙系统