项目最近docker用的比较多,经常会用到镜像的打包和部署,编写一下shell脚本方便镜像的快速保存和加载。
1.docker镜像的快速保存
#/bin/bash
for i in "$@"
do
echo -e "\033[0;30;42m ########## << 镜像 $i 开始保存 >> #########\033[0m\n"
image=$(docker ps -a | grep $i | awk '{print $2}')
echo -e "\033[0;30;42m ########## << 保存的镜像为 ¥image >> #########\033[0m\n"
docker save $image | gzip > $i-${image##*:}.tar.gz
echo -e "\033[0;30;42m ########## << 镜像 $i 保存成功 >> #########\033[0m\n"
done
使用方法:
vim saveImages.sh #编辑一个脚本文件,把上面的shell复制进去
chmod u+x saveImages.sh #赋权
./saveImages.sh crm erp #crm和erp为当前启动容器的名称,可以跟多个,空格分隔
#执行完就可以看到镜像会打包到当前文件夹下
2.docker镜像的快速加载
#load当前目录下所有*tar.gz镜像文件
path=$1
files=$(ls $path)
for filename in $files
do
if [[ $filename == *.gz ]];then
echo -e "\033[0;30;42m ########## << 开始load镜像 $filename >> ##########\033[0m\n"
gunzip -c $filename | docker load
echo -e "\033[0;30;42m ########## << load镜像完成 $filename >> ##########\033[0m\n"
fi
done
使用方法:
vim loadImages.sh #编辑一个脚本文件,把上面的shell复制进去
chmod u+x loadImages.sh #赋权
./loadImages.sh #执行此命令前,将上一个命令保存的镜像文件拷贝到此脚本的同文件夹下,运行即可加载所有镜像
3.容器的启动
docker run --network mysql-network --env MODE=standalone --restart=always \
--name=nacos -d -p 8848:8848 \
-v /home/nacos/logs:/home/nacos/logs \
-v /home/nacos/conf:/home/nacos/conf \
nacos/nacos-server:1.4.1