You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
You have docker volume on one host and want to move that volume to another host. For example, you want to transfer PostgreSQL container with it's volume to another host.
# Solution
Actually, there is no in-a-box solution from Docker, so we need to:
- attach our volume to another container
- copy and archive all files
- copy archive to another host
- create volume
# Script
To be honest, original script was posted on [Medium](https://medium.com/@ioannis.gkikasth/how-to-migrate-a-docker-volume-from-one-machine-to-another-7445ff172957), by [@funkyfisch](https://github.com/funkyfisch). Original gist - https://gist.github.com/funkyfisch/0372475f82639cbba0fbc55df7eff648#file-migrate-docker-volume-sh.
```
#!/bin/bash
# Environment check
SOURCE_HOST_ADDRESS=localhost
SOURCE_HOST_USER=$USER
TARGET_HOST_ADDRESS=192.168.126.168
TARGET_HOST_USER=targetuser
# If migrating from localhost, set this to localhost
if [[ ! $SOURCE_HOST_ADDRESS ]]
then
echo "Please set the current host address in SOURCE_HOST_ADDRESS"
exit 1
fi
# If migrating from localhost, set this to $USER
if [[ ! $SOURCE_HOST_USER ]]
then
echo "Please set the current host user in SOURCE_HOST"
exit 1
fi
# If migrating to localhost, set this to localhost
if [[ ! $TARGET_HOST_ADDRESS ]]
then
echo "Please set the new host address in TARGET_HOST_ADDRESS"
exit 1
fi
# If migrating to localhost, set this to $USER
if [[ ! $TARGET_HOST_USER ]]
then
echo "Please set the new host user in TARGET_HOST_USER"
exit 1
fi
# Argument check
if [[ ! $1 ]]
then
echo "Please supply a docker volume name, as displayed by the command 'docker volume ls'"
exit 1
fi
volume_name=$1
# Export the volume from the current instance
echo "Exporting volume $volume_name on $SOURCE_HOST_ADDRESS"