以 Ghost 博客平台的迁移为例,该容器创建时通过 -v 参数创建了名为 ghost_data 的数据卷。

$ sudo docker volume ls
DRIVER              VOLUME NAME
local               ghost_data

数据导出

这里通过将数据卷挂载到一个临时容器并通过 tar 执行文件打包:

$ sudo docker run --rm \
    -v ghost_data:/source \
    -v $(pwd):/backup \
    alpine sh -c "cd /source && tar cvf /backup/ghost_data.tar ."

执行完毕后,打包好的数据位于当前目录的 backup 文件夹下,将备份的数据文件传输到目标主机。

数据还原

在目标主机上创建新的 ghost 容器,依然使用 -v 参数创建名为 ghost_data 的数据卷。

然后再次通过临时容器挂载数据卷,使用 tar 解压数据到卷中:

$ sudo docker run --rm \
    -v ghost_data:/dist \
    -v $(pwd):/backup \
    alpine sh -c "cd /dist && tar xvf /backup/ghost_data.tar"

注意:数据迁移完成后需要重启 ghost 容器。