Creé un volumen acoplable para postgres en mi máquina local.
docker create volume postgres-dataLuego usé este volumen y ejecuté una ventana acoplable.
docker run -it -v postgres-data:/var/lib/postgresql/9.6/main postgresDespués de eso, hice algunas operaciones de base de datos que se almacenaron automáticamente en postgres-data. Ahora quiero copiar ese volumen de mi máquina local a otra máquina remota. Cómo hacer lo mismo.
Nota: el tamaño de la base de datos es muy grande
Si la segunda máquina tiene habilitado SSH, puede usar un contenedor Alpine en la primera máquina para mapear el volumen, empaquetarlo y enviarlo a la segunda máquina.
Eso se vería así:
docker run --rm -v <SOURCE_DATA_VOLUME_NAME>:/from alpine ash -c \ "cd /from ; tar -cf - . " | \ ssh <TARGET_HOST> \ 'docker run --rm -i -v <TARGET_DATA_VOLUME_NAME>:/to alpine ash -c "cd /to ; tar -xpvf - "'Tendrás que cambiar:
O bien, puede intentar usar este script auxiliar https://github.com/gdiepen/docker-convenience-scripts
Espero que esto ayude.
Tuve exactamente el mismo problema, pero en mi caso, ambos volúmenes estaban en VPC independientes y no podían exponer SSH al mundo exterior. Terminé creando dvsync que usa ngrok para crear un túnel entre ellos y luego uso rsync sobre SSH para copiar los datos. En su caso, podría iniciar el dvsync-server en su máquina:
$ docker run --rm -e NGROK_AUTHTOKEN="$NGROK_AUTHTOKEN" \ --mount source=postgres-data,target=/data,readonly \ quay.io/suda/dvsync-server y luego inicie dvsync-client en la máquina de destino:
docker run -e DVSYNC_TOKEN="$DVSYNC_TOKEN" \ --mount source=MY_TARGET_VOLUME,target=/data \ quay.io/suda/dvsync-client El NGROK_AUTHTOKEN se puede encontrar en el panel de ngrok y el DVSYNC_TOKEN muestra el dvsync-server en su salida estándar.
Una vez realizada la sincronización, el dvsync-client se detendrá.