Is it possible to backup a running Docker container? Is the export
command suitable for doing that?
Posted by one friend in comments
Hi Slava, sorry that your question was closed. For the record, Slava is talking about docker.io, a runtime for linux containers. Yes, docker export
is a suitable approach. It will generate a tarball of your entire container filesystem state, and dump it on stdout. So
docker export $CONTAINER_ID > $CONTAINER_ID-backup.tar
will yield a usable tarball. You can re-import the tarball with
docker import - slava/$CONTAINER_ID-backup < $CONTAINER_ID-backup.tar
Note the original metadata (eg id of the original image) will be lost. This should be fixed in future versions of docker. – Solomon Hykes Apr 2 '13 at 6:35
Adding here so one can find from summary that question was answered. Thanks Solomon!
export
has some limitations: it won't export the data volume.
Here's data volume means:
- There's a
VOLUME
defined in the image's Dockerfile. - The container is start with a parameter like this:
-v /webapp
More about data: https://docs.docker.com/userguide/dockervolumes/
The way to handle this situation is start a new container with '--volumes-from' parameter to hook on that container, so you can visit the data volume.
Examples:
- Visit the data: (in a bash)
docker run -it --volumes-from target_container ubuntu bash
- Backup to host: (a postgres container)
docker run -it --volumes-from some_postgres -v /host/path:/container/path --rm ubuntu bash -c "tar -cvf /container/path/postgres-backup.tar /var/lib/postgresql/data"
Using the docker commit
is my preferred way to back up a container (started or stopped). Creates an image that you can name:
docker commit - p <container_id> <backup-name>
you can also using save and load.. here's the sample
sudo docker images
awan@google-dev:~/StarCenter/_docker$ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE google_star/_version_1.10 latest 1067d6689697b2 4 days ago 1.666 GB
sudo docker save google_star/_version_1.10 > my_docker-backup.tgz
restore it using (
sudo docker load < my_docker-backup.tgz
)check your images using
sudo docker images
in your new docker machine
© 2022 - 2024 — McMap. All rights reserved.