docker-compose-img 镜像管理工具

388 阅读1分钟

镜像管理工具docker-compose-img :

prerequisite

  • docker-compose安装,并通过PATH可以找到
  • docker提前安装

功能

  • save: 保存docker-compose.yaml镜像至tar包
  • load: 加载save命令保存的tar包
  • list: 列出docker-compose.yaml文件的全部镜像

Code

#!/bin/bash

function usage(){

echo "
docker-compose-img is a utils tools for image management. specifically for docker-compose.yaml

docker-compose [list|load|save|push]

subcommand description:
    list: list the images
    load: load images from images dir
    save: save images to images dir
"

}

function list(){
   if [ -n $1 ] && [ "$1"x = "simple"x ]
   then
      docker-compose images | grep -v Container | gawk '{print $2}'
   else
      docker-compose images
   fi
}

function load(){
   cur_dir=$(pwd)
   for file in $(ls images)
   do
      if [ "${file##*.}"x = "tar"x ]
      then
        docker load -i images/$file
      fi
   done
   cd $cur_dir
}

function save(){
   mkdir -p images
   for image in $(docker-compose images | grep -v Container | gawk '{print $2}')
   do
      local image_tarfile=$(echo $image | tr . - | tr / _ |tr : _).tar

      echo [INFO] saving $image to file $image_tarfile
      if [ -f images/$image_tarfile ]
      then
        echo [INFO] cleaning the old image file: $image_tarfile
      fi
      docker image save $image > images/$image_tarfile
   done
}


SUBCOMMAND=$1

case $SUBCOMMAND in
    list)
      shift
      list $@
      ;;
    load)
      load
      ;;
    save)
      save
      ;;
    *)
      echo [ERROR] at least one subcommand should be specified.
      usage
      exit 1
      ;;
esac