1

Docker导出全部镜像命令

发表于:2024-9-29 13:49:26 攻略分享 319
本帖最后由 ALEX-bin 于 2024-9-29 13:51 编辑

1.docker经常抽风,Docker导出全部镜像命令

  1. #!/bin/bash

  2. # 读取本地 "image:tag" 名称
  3. IMG_NAME=`docker images | grep -v TAG | awk '{print $1":"$2}'`
  4. # echo $IMG_NAME | awk '{gsub(/ /,"\n",$0)} {print $0}'
  5. # 定义镜像存放目录
  6. DIR="/vol1/docker/1111"
  7. if [ ! -d "$DIR" ]; then
  8.   echo -e "\033[34m${DIR}\033[0m 不存在"
  9.   mkdir -p "$DIR"
  10.   echo -e "\033[34m${DIR}\033[0m 已创建"
  11. else
  12.   echo -e "\033[34m${DIR}\033[0m 已存在"
  13. fi
  14. echo ""
  15. for IMAGE in $IMG_NAME
  16. do
  17.   echo -e "正在保存 \033[33m${IMAGE}\033[0m"
  18.   SAVE_NAME=`echo $IMAGE | awk -F: '{print $1"_"$2}' | sed 's/\//_/g'`
  19.   docker save $IMAGE -o ${DIR}/${SAVE_NAME}.tar
  20.   echo -e "已保存到 \033[34m${DIR}/\033[31m${SAVE_NAME}.tar\033[0m"
  21.   echo ""
  22. done
复制代码
2.导入命令
  1. #!/bin/bash

  2. # 在此处填写镜像文件的保存目录
  3. IMAGE_DIR="/data/docker/image_tar"

  4. for IMAGE in `ls $IMAGE_DIR`
  5. do
  6.   echo -e "正在导入镜像 \033[33m$IMAGE\033[0m"
  7.   docker load -i ${IMAGE_DIR}/${IMAGE}
  8.   echo -e "已成功导入镜像 \033[33m$IMAGE\033[0m"
  9.   echo ""
  10. done
复制代码
3.引用自https://www.jianshu.com/p/7aa9417b629b



收藏
送赞 1
分享

发表回复

评论列表(3)

就喜欢发技术贴的大佬,省事
2024-10-1 00:22:50 回复
#!/bin/bash
docker save $(docker images --format '{{.Repository}}:{{.Tag}}') -o allinone.tar
用的这个命令 可惜是不知道把镜像导出到哪儿了
官方不能给个导入和导出的功能么……
2024-11-2 20:01:59 回复
跟风发一个,相较楼主这个加了备份文件名判断,可以扔到计划任务里,镜像有变化就更新,否则跳过

```
#!/bin/bash

set -x

# 备份docker image
IMAGE_BACKUP_DIR="/volume1/backup/docker_image"
BACKUP_DIR_OWNER="archblux:users"

IMAGE_BACKUP_LIST=$(docker image  ls | cut -d " " -f 1)
for each_image in ${IMAGE_BACKUP_LIST};do
   image_name=$(docker image ls | grep -i  ${each_image} | awk  '{ print $1 "_" $3 }' | awk -F '/' '{ print $NF}')
   if [ ! -f ${IMAGE_BACKUP_DIR}/${image_name}.tar ]; then
       docker save -o ${IMAGE_BACKUP_DIR}/${image_name}.tar ${each_image}
   fi
done
chown -Rv ${BACKUP_DIR_OWNER} ${IMAGE_BACKUP_DIR}


```
2024-11-2 22:04:10 回复