Tengo un contenedor docker postgreSQL en ejecución y necesito agregar un montaje de volumen.
Seguí los pasos de ¿Cómo puedo agregar un volumen a un contenedor Docker existente? , (ejecutó docker commit en el contenedor para guardarlo como una imagen y creó otro contenedor basado en esa imagen con un volumen con nombre montado). Todos los archivos de datos del primer contenedor están presentes en /var/lib/postgres/data del segundo contenedor.
Sin embargo, cuando intento consultar esta segunda base de datos de postgres, no puedo ver ninguna tabla que esté en el primer contenedor. He estado tratando de arreglar esto durante unos días sin suerte, ¿me estoy perdiendo algo aquí (montar un volumen oculta los datos existentes en /var/lib/postres/data)?
La confirmación no funcionará ya que existe el volumen definido en el Dockerfile .
Los volúmenes son útiles en muchos casos, por ejemplo, para ejecutar el almacenamiento de bases de datos. Sin embargo, dado que los volúmenes no son 'parte' de un contenedor, hace que los contenedores ya no sean portátiles, lo que parece estar en conflicto directo con el eslogan "Construir una vez... Ejecutar en cualquier lugar".
contenedor de datos de compromiso de docker con VOLUMEN
Una opción que puede probar es copiar la carpeta de datos al host desde un contenedor existente y luego iniciar el contenedor con la ruta de montaje.
docker cp my_db_cotainer:/var/lib/postgresql/data db_dataluego inicie un nuevo contenedor con esta ruta para que contenga los mismos datos que el anterior
docker run -d --name some-postgres -v $PWD/db_data/:/var/lib/postgresql/data postgreslo mismo para mysql
docker cp some-mysql-old:/var/lib/mysql db_backup docker run --rm --name some-mysql-new -v $PWD/db_backup:/var/lib/mysql -it mysql