Solución:
Solución 1:
Actualmente, no puede cambiar el nombre de los volúmenes existentes. (Esto es cierto ya sea que hayan sido nombrados anteriormente o sin nombre y sus nombres se hayan generado automáticamente).
Puede ver este problema para obtener más información sobre la implementación de esta función, así como agregar su “+1” https://foroayuda.es/ “Pulgar hacia arriba” para que los desarrolladores sepan que lo desea.
Sin eso, hasta donde yo sé, la única buena manera de hacerlo es crear el nuevo volumen con nombre y copiar los datos.
Solucion 2:
Para resumir la solución alternativa:
docker volume create --name <new_volume>
docker run --rm -it -v <old_volume>:/from:ro -v <new_volume>:/to alpine
ash -c "cd /from ; cp -av . /to"
docker volume rm <old_volume>
Este método tiene la ventaja de utilizar la API de Docker. Utiliza una imagen ligera de Linux llamada alpine
y su caparazón predeterminado, ash
para ejecutar una copia de archivo, cp -av
del volumen anterior al volumen recién nombrado.
Solución 3:
En el momento de escribir este artículo, la única opción es copiar los datos. Los detalles pueden variar según su configuración particular. La lista general de pasos a realizar es la siguiente:
-
Deténgase y retire el contenedor de origen para permitir que se cree el nuevo volumen en el paso 3.
docker stop NAME docker rm NAME # or docker-compose stop SERVICE docker-compose rm SERVICE
En algunos casos, es posible que pueda posponer la eliminación del contenedor de origen, por ejemplo, al cambiar de
docker-compose
volumen anónimo adocker-compose
volumen nombrado. En este casoup
crearía el nuevo volumen. Y puede continuar con la copia de los datos. Pero incluso en este caso, se recomienda detener el contenedor para evitar que se modifiquen los datos a medida que los copia. Y tienes que quitar el contenedor de origen paradocker-compose
para cambiar al nuevo volumen (preste atención a las advertencias).En algunos casos, no es realmente necesario, por ejemplo, cuando se cambia de contenedores independientes a
docker-compose
. -
Cambio
docker-compose.yml
si es aplicable. -
Inicie el nuevo contenedor para crear el nuevo volumen.
Contenedores independientes:
docker run ... # or docker-compose up -d
-
Detenga el contenedor nuevo para evitar que se modifiquen los datos.
docker stop ... # or docker-compose stop
En caso de migrar, por ejemplo, a un contenedor independiente con un volumen con nombre, puede simplemente crear el volumen en lugar de iniciar / detener el contenedor.
-
Copie los datos.
docker run --rm -v "SRC_VOLUME:/from" -v "DST_VOLUME:/to" bash -c ' shopt -s dotglob # rm -r /to/* # e.g. pg might have populated the new volume cp -r /from/* /to '
Donde SRC_VOLUME, DST_VOLUME: nombre del volumen, id o ruta absoluta a un directorio en el host.
Para enumerar los volúmenes adjuntos a un contenedor, utilice:
docker inspect CONTAINER --format '{{json .Mounts}}' | jq
Donde CONTENEDOR – nombre o identificación del contenedor.
-
Inicie el nuevo contenedor.
docker run ... # or docker-compose up -d
-
Regocíjate 🙂
En caso de que desee experimentar con diferentes configuraciones, consulte la siguiente esencia.