Tabla de contenido
2. Guarde la imagen en su máquina local.
1. Ver archivos de imagen existentes
2. Guarde la imagen como un archivo local.
Pruebe a guardar la imagen según la ID de la imagen
Cargar imagen local guardada por ID de imagen
4. Guardar y cargar secuencias de comandos de imágenes por lotes
Guardar imágenes por lotes en un script local
Script tar de carga de imagen por lotes
1. Situaciones aplicables
Generalmente, cuando descargamos imágenes de Docker, configuraremos fuentes de imágenes nacionales para acelerar la descarga, pero a veces existen los siguientes requisitos:
- El dispositivo no se puede conectar a Internet y la imagen no se puede descargar directamente. Debe descargar la imagen de otros dispositivos y copiarla al dispositivo que no está actualmente conectado a Internet.
- La imagen del dispositivo está en un almacén privado y no se puede descargar. Debe copiarse en el dispositivo actual.
Cuando se encuentre con las situaciones anteriores, puede consultar las siguientes operaciones ( se adjuntan scripts para guardar e importar imágenes por lotes )
2. Guarde la imagen en su máquina local.
1. Ver archivos de imagen existentes
docker images
Como se muestra en la figura siguiente, todas las imágenes en el dispositivo actual
2. Guarde la imagen como un archivo local.
punto importante:
- La imagen guardada debe ser un archivo tipo tar.
- Si se usa la ID de la imagen en el comando de guardar, REPOSTITORY y TAG no son ninguno al importar el archivo tar, y la etiqueta de la imagen debe restablecerse usando la ID de la imagen; si se usa el nombre de la imagen, este problema no ocurrirá.
-
Guardar comando uno
#指令一
docker save -o /data/docker/nginx_latest.tar nginx
#Instrucción uno
ventana acoplable guardar -o
/data/docker/nginx_latest.tar Nombre del archivo guardado, debe ser tipo tar, se puede agregar la ruta para guardar
nginx La imagen que se guardará (ya sea nombre o ID, puede agregar TAG después del nombre para especificar la versión)
-
Guardar comando dos
#指令二
docker save nginx > nginx_latest01.tar
#Instrucción 2
guardar en la ventana acoplable
Imagen nginx que se guardará (ya sea nombre o ID)
>
nginx_latest01.tar La imagen que se guardará (ya sea nombre o ID, puede agregar TAG después del nombre para especificar la versión)
Ejecute el comando uno y el comando dos respectivamente
Después del éxito, guárdelo en archivos locales llamados nginx_latest.tar y nginx_latest01.tar.
-
Pruebe a guardar la imagen según la ID de la imagen
Para probar " si se usa la ID de la imagen en el comando de guardar, REPOSTITORY y TAG no son ninguno al importar el archivo tar, y la etiqueta de la imagen debe restablecerse usando la ID de la imagen", la imagen local guardada por ID DE IMAGEN Se probará por separado al cargar la imagen.
docker save -o nginx_latest_byID.tar 89da1fb6dcb9
3. Cargar imagen local
Tenemos un archivo de imagen local. Cuando sea necesario, podemos copiar la imagen local guardada en el dispositivo requerido y usar la carga de la ventana acoplable para importar la imagen guardada localmente en la ventana acoplable nuevamente.
-
Cargando comando uno
#指令一
docker load < nginx_latest.tar
La siguiente demostración es para restaurar la misma imagen después de eliminarla.
-
Cargando comando dos
#指令二
docker load --input nginx_latest.tar
La operación básica del comando 2 es la misma que la del comando 1.
-
Cargar imagen local guardada por ID de imagen
El archivo de imagen local guardado por IMAGE ID es nginx_latest_byID.tar. Después de cargar, REPOSTITORY y TAG son ninguno. La siguiente es la prueba de carga.
4. Guardar y cargar secuencias de comandos de imágenes por lotes
-
Guardar imágenes por lotes en un script local
Crea un nuevo save_images.sh y escribe el siguiente contenido:
#!/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_save"
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
El script recién agregado no tiene permisos de ejecución. La prueba actual establece directamente los permisos en 777.
#修改文件权限为简单粗暴的所有者、所属组和其他人都有读写执行权限
chmod 777 save_images.sh
Demostración del efecto de ejecución:
-
Script tar de carga de imagen por lotes
Cree un nuevo load_images.sh y otras operaciones son las mismas que save_image.sh.
#!/bin/bash
# 在此处填写镜像文件的保存目录
IMAGE_DIR="/data/docker/image_save"
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
Demostración del efecto de ejecución: