如何将已停止的Docker容器rocky_85备份至远程机器或挂载点?
已停止Docker容器的跨磁盘/远程备份方案
针对你遇到的本地磁盘不足、端口被占无法重启容器的情况,以下几种方法可以直接备份已停止的rocky_85容器到外部挂载点或远程机器:
1. 直接打包容器文件系统到外部挂载点
Docker容器的底层文件系统默认存储在/var/lib/docker/containers/<容器ID>目录下,可直接打包迁移:
- 先获取容器ID:
docker inspect -f '{{.Id}}' rocky_85 - 将大磁盘挂载到本地目录(例如
/mnt/large_disk),然后打包容器文件:tar -czvf /mnt/large_disk/rocky_85_backup.tar.gz /var/lib/docker/containers/<替换为容器ID> - 若需传到远程机器,用
scp直接传输打包好的文件:scp /mnt/large_disk/rocky_85_backup.tar.gz remote_user@remote_host:/path/to/remote/backup/
2. 流式导出到远程,完全避免本地磁盘占用
利用docker export的标准输出特性,结合管道直接将容器文件系统传到远程,无需本地存储中间文件:
- 直接导出到远程机器:
docker export rocky_85 | ssh remote_user@remote_host 'cat > /path/to/remote/rocky_85_export.tar' - 如需压缩传输,添加
gzip减少带宽占用:docker export rocky_85 | gzip | ssh remote_user@remote_host 'cat > /path/to/remote/rocky_85_export.tar.gz'
3. 迁移Docker存储目录到外部大磁盘(适合后续复用容器)
如果之后仍需在本地操作该容器,可将Docker的默认存储目录迁移到挂载的大磁盘:
- 停止Docker服务:
systemctl stop docker - 同步现有Docker数据到挂载点:
rsync -aX /var/lib/docker/ /mnt/large_disk/docker/ - 新建或修改Docker配置文件
/etc/docker/daemon.json,指定新的存储路径:{ "data-root": "/mnt/large_disk/docker" } - 备份原存储目录:
mv /var/lib/docker /var/lib/docker.old - 重启Docker服务:
systemctl start docker
完成后即可正常使用docker commit等命令,所有容器数据将存储在大磁盘上。
注意事项
- 操作前务必确认
rocky_85容器处于停止状态,防止文件系统数据不一致 - 远程传输时若网络不稳定,建议先打包到本地挂载点,再用
rsync断点续传 - 用
docker export导出的文件系统可通过docker import恢复为容器:docker import rocky_85_export.tar rocky_85:backup
内容的提问来源于stack exchange,提问作者Daniel YC Lin
相关产品推荐
相关产品推荐

