How to port data-only volumes from one host to another?

前端 未结 5 1688
被撕碎了的回忆
被撕碎了的回忆 2020-11-29 15:34

As described in the Docker documentation on Working with Volumes there is the concept of so-called data-only containers, which provide a volume that can be mounted

5条回答
  •  遥遥无期
    2020-11-29 16:04

    Extending the official answer from Docker docs and the top answer here, you can have following aliases in your .bashrc or .zshrc

    # backup files from a docker volume into /tmp/backup.tar.gz
    function docker-volume-backup-compressed() {
      docker run --rm -v /tmp:/backup --volumes-from "$1" debian:jessie tar -czvf /backup/backup.tar.gz "${@:2}"
    }
    # restore files from /tmp/backup.tar.gz into a docker volume
    function docker-volume-restore-compressed() {
      docker run --rm -v /tmp:/backup --volumes-from "$1" debian:jessie tar -xzvf /backup/backup.tar.gz "${@:2}"
      echo "Double checking files..."
      docker run --rm -v /tmp:/backup --volumes-from "$1" debian:jessie ls -lh "${@:2}"
    }
    # backup files from a docker volume into /tmp/backup.tar
    function docker-volume-backup() {
      docker run --rm -v /tmp:/backup --volumes-from "$1" busybox tar -cvf /backup/backup.tar "${@:2}"
    }
    # restore files from /tmp/backup.tar into a docker volume
    function docker-volume-restore() {
      docker run --rm -v /tmp:/backup --volumes-from "$1" busybox tar -xvf /backup/backup.tar "${@:2}"
      echo "Double checking files..."
      docker run --rm -v /tmp:/backup --volumes-from "$1" busybox ls -lh "${@:2}"
    }
    

    Note that the backup is saved into /tmp, so you can move the backup file saved there between docker hosts.

    There is also two pairs of backup/restore aliases. One using compression and debian:jessie and other with no compression but with busybox. Favor using compression if the files to backup are big.

提交回复
热议问题