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
相关推荐
北京阿法龙科技有限公司1 小时前
AR眼镜基于上下文智能识别:电力运维高效规范操作应用方案|阿法龙XR云平台
运维·ar·xr
RisunJan1 小时前
docker一键部署项目
运维·docker·容器
你的人类朋友1 小时前
😎 Node.js 应用多阶段构建 Dockerfile 详解
后端·docker·容器
victory04312 小时前
K8S NFS 静态配置和动态配置 StorageClass
云原生·容器·kubernetes
运维 小白2 小时前
k8s 部署NFS和动态供应器
云原生·容器·kubernetes
luyun0202022 小时前
Windows 11操作更丝滑,绝了
java·运维·figma
wanhengidc3 小时前
全面了解云手机的安全性
运维·服务器·游戏·智能手机·云计算
hweiyu003 小时前
Docker(K8S)容器架构教程(视频教程)
docker·架构·kubernetes
menge23333 小时前
Linux DNS域名解析服务器练习
linux·运维·服务器
努力成为一个程序猿.4 小时前
Clickhouse数据副本和分片
运维·clickhouse·debian