docker-export 805 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #!/bin/bash
  2. set -e
  3. IMG=$1
  4. if [[ -z "$IMG" ]]; then
  5. echo "Usage: $0 <dockerimgurl>"
  6. exit 1
  7. fi
  8. NAME=$(echo -n $IMG | cut -d / -f 3)
  9. NAME="${NAME/:/-}"
  10. echo "Export docker iamge to $NAME"
  11. if [[ -d $NAME ]]; then
  12. echo "directory $NAME already exists!"
  13. exit 1
  14. fi
  15. mkdir $NAME
  16. IMGCNT=0
  17. for arch in $(docker manifest inspect $IMG | grep -w "\"architecture\"" | awk '{print $2}' | cut -f 2 -d \")
  18. do
  19. echo "export to linux/$arch"
  20. docker pull --platform "linux/$arch" $IMG
  21. docker tag $IMG "$IMG-$arch"
  22. docker save "$IMG-$arch" | gzip > $NAME/img-$arch.tgz
  23. docker image rm $IMG "$IMG-$arch"
  24. IMGCNT=$((IMGCNT+1))
  25. done
  26. if [ "$IMGCNT" -eq "0" ]; then
  27. echo "This is an ordinary image"
  28. docker pull $IMG
  29. docker save $IMG | gzip > $NAME/img.tgz
  30. docker image rm $IMG
  31. fi
  32. tar cvf $NAME.tar $NAME