Saltar al contenido

Docker convierte un volumen anónimo en un volumen con nombre

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:

  1. 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 a docker-compose volumen nombrado. En este caso up 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 para docker-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.

  2. Cambio docker-compose.yml si es aplicable.

  3. Inicie el nuevo contenedor para crear el nuevo volumen.

    Contenedores independientes:

    docker run ...
    # or
    docker-compose up -d
    
  4. 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.

  5. 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.

  6. Inicie el nuevo contenedor.

    docker run ...
    # or
    docker-compose up -d
    
  7. Regocíjate 🙂

En caso de que desee experimentar con diferentes configuraciones, consulte la siguiente esencia.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *