有时候,需要将一台机器上的镜像拷贝到另一台机器,记录下我常使用的脚本
1. 导出本机所有镜像到 tar
# vim exporter.sh
#!/bin/bash
echo "Docker Images Exporter by BlueLight"
TMP_DIR="DOCKER_IMAGES_TMP"
ABS_DIR=$PWD/$TMP_DIR
if [[ -d $ABS_DIR ]];then
echo "rm -rf $ABS_DIR"
fi
mkdir -p $ABS_DIR && cd $ABS_DIR
cat >> save.sh <<EOF
#!/bin/bash
FS=' ' arr=(\$1)
echo "exec docker save -o \${arr[1]}.tar \${arr[0]} in $PWD"
docker save -o \${arr[1]}.tar \${arr[0]}
EOF
chmod +x save.sh
docker images | awk '{if (NR>1) print $1":"$2" "$3}' | xargs -d "\n" -I @ ./save.sh @
rm -rf save.sh
cd ..
tar czvf `hostname`-all.tar $TMP_DIR
rm -rf $ABS_DIR
echo "Done! All images are packaged in `hostname`-all.tar"
# mkdir mig && cd mig
# bash exporter.sh
2. 镜像导入
拷贝镜像 tar 到目标机器,并解压
进入镜像 tar 所在目录
# ls | xargs -t -I @ docker load -i @