docker-import 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #!/bin/bash
  2. TAR=$1
  3. TARGET=$2
  4. if [[ -z "$TARGET" ]]; then
  5. echo "Usage: $0 <tar_file> <docker_image_url>"
  6. echo " Eg: $0 docs-ee-v3.10.10.tar registry.cn-beijing.aliyuncs.com/examplerepo/docs-ee:v3.10.10"
  7. exit 1
  8. fi
  9. WORK_DIR=`mktemp -d -p "."`
  10. if [[ ! "$WORK_DIR" || ! -d "$WORK_DIR" ]]; then
  11. echo "Could not create temp dir"
  12. exit 1
  13. fi
  14. function cleanup {
  15. rm -rf "$WORK_DIR"
  16. echo "Deleted temp working directory $WORK_DIR"
  17. }
  18. # register the cleanup function to be called on the EXIT signal
  19. trap cleanup EXIT
  20. tar xvf $TAR --strip-components=1 -C $WORK_DIR
  21. echo "cd $WORK_DIR"
  22. cd $WORK_DIR
  23. IMGCNT=$(ls img* | wc -l)
  24. if [ "$IMGCNT" -eq "0" ]; then
  25. echo "Not a recognized package, give up ..."
  26. exit 1
  27. fi
  28. if [ "$IMGCNT" -eq "1" ]; then
  29. echo "This is a single image package"
  30. IMG=$(docker load < $f | tail -n 1 | awk '{print $3}')
  31. echo "Loading $IMG..."
  32. docker tag $IMG $TARGET
  33. docker push $TARGET
  34. else
  35. for f in $(ls img*)
  36. do
  37. echo $f
  38. IMG=$(docker load < $f | tail -n 1 | awk '{print $3}')
  39. echo "Loading $IMG..."
  40. ARCH=$(echo -n $IMG | rev | cut -d - -f 1 | rev)
  41. TIMG="$TARGET-$ARCH"
  42. echo "tag $IMG to $TIMG ..."
  43. docker tag $IMG $TIMG
  44. docker push $TIMG
  45. echo "$TIMG $ARCH" >> imglist
  46. done
  47. # create manifest
  48. cat imglist | awk '{print $1}' | xargs docker manifest create $TARGET
  49. cat imglist | awk '{print "docker manifest annotate '$TARGET' " $1 " --arch " $2 " --os linux"}'
  50. docker manifest push $TARGET
  51. fi
  52. echo $TARGET