docker保存镜像到本地
郭庆汝 人气:0docker保存镜像到本地,并加载本地镜像文件
1、查看已有的镜像文件:
docker images
显示效果如下所示:
2、将镜像打包成本地文件
指令:docker save 镜像id > 文件名.tar
docker save 172825a55619>./watch_ocr.tar# watch_ocr.tar为打包的文件
显示效果如下所示:
3、在另一台主机加载本地文件到镜像
本地已有镜像:
加载本地文件到镜像:
指令:docker load < 文件名.tar
docker load < watch_ocr.tar # watch_ocr.tar 为文件名称
4、镜像重命名
执行完上述语句后,查看本地镜像,会看到新加载的镜像名字和标签都是none,利用该镜像的id对名字和标签重新命名即可:
指令:docker tag 镜像id 镜像名:标签
docker tag 172825a55619 watch_ocr:1.2
执行完毕后,查看本地镜像:
5、创建容器
指令:
docker run -it --name watch_ocr_contain 172825a55619 /bin/bash
watch_ocr_contain :容器名称
172825a55619 :镜像id
补充:docker批量导出导入本地镜像
日常工作中经常需要导出docker中的镜像,如果镜像数量过多时会相当麻烦,下列导出导入脚本很好的解决了该问题。
导出脚本
#!/bin/bash # 获取到 "image:tag" 格式的镜像名 IMG_NAME=`docker images | grep -v TAG | awk '{print $1":"$2}'` # echo $IMG_NAME | awk '{gsub(/ /,"\n",$0)} {print $0}' # 如果原本镜像名中存在 "/" 是需要去掉的 # 定义镜像存放目录 DIR="/data/docker/image_tar" if [ ! -d "$DIR" ]; then echo -e "\033[34m${DIR}\033[0m 不存在" mkdir -p "$DIR" echo -e "\033[34m${DIR}\033[0m 已创建" else echo -e "\033[34m${DIR}\033[0m 已存在" fi echo "" for IMAGE in $IMG_NAME do echo -e "正在保存 \033[33m${IMAGE}\033[0m" SAVE_NAME=`echo $IMAGE | awk -F: '{print $1"_"$2}' | sed 's/\//_/g'` docker save $IMAGE -o ${DIR}/${SAVE_NAME}.tar echo -e "已保存到 \033[34m${DIR}/\033[31m${SAVE_NAME}.tar\033[0m" echo "" done
导入脚本
#!/bin/bash # 在此处填写镜像文件的保存目录 IMAGE_DIR="/data/docker/image_tar" for IMAGE in `ls $IMAGE_DIR` do echo -e "正在导入镜像 \033[33m$IMAGE\033[0m" docker load -i ${IMAGE_DIR}/${IMAGE} echo -e "已成功导入镜像 \033[33m$IMAGE\033[0m" echo "" done
总结
加载全部内容