Skip to content

The docker-export and docker-commit commands do not save the container volumes. Use this script to save and load the container volumes.

License

Notifications You must be signed in to change notification settings

dennisvanderpool/docker-volumes.sh

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 

Repository files navigation

docker-volumes.sh

The docker export and docker commit commands do not save the container volumes. Use this script to save and load the container volumes.

Usage

docker-volumes.sh [-v|--verbose] CONTAINER [save|load] TARBALL

Example

Let's migrate a container to another host with all its volumes.

# Stop the container 
docker stop $CONTAINER
# Create a new image
docker commit $CONTAINER $CONTAINER
# Save and load image to another host
docker save $CONTAINER | ssh $USER@$HOST docker load 

# Save the volumes (use ".tar.gz" if you want compression)
docker-volumes.sh $CONTAINER save $CONTAINER-volumes.tar

# Copy volumes to another host
scp $CONTAINER-volumes.tar $USER@$HOST:

### On the other host:

# Create container with the same options used in the previous container
docker create --name $CONTAINER [<PREVIOUS CONTAINER OPTIONS>] $CONTAINER

# Load the volumes
docker-volumes.sh $CONTAINER load $CONTAINER-volumes.tar

# Start container
docker start $CONTAINER

Notes

  • This script could have been written in Python or Go, but the tarfile module and the tar package lack support for writing sparse files.
  • We use the Ubuntu 18.04 Docker image with GNU tar v1.29 that uses SEEK_DATA/SEEK_HOLE to manage sparse files.
  • To see the volumes that would be processed run docker container inspect -f '{{json .Mounts}}' $CONTAINER and pipe it to either jq or python -m json.tool.

About

The docker-export and docker-commit commands do not save the container volumes. Use this script to save and load the container volumes.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Shell 100.0%