如何指定外部卷/文件夹存储Docker内部文件系统并分享容器状态?
将Docker容器完整文件系统备份到外部驱动器并分享的可行性及操作步骤
完全可行,你可以通过以下步骤实现容器文件系统的备份、迁移与恢复:
一、备份容器到外部驱动器
挂载外部驱动器
先将你的外部驱动器挂载到Ubuntu主机的某个目录,例如/mnt/external:sudo mkdir -p /mnt/external sudo mount /dev/sdX1 /mnt/external # 替换sdX1为你的外部驱动器实际分区,可通过lsblk命令查看导出容器文件系统
使用docker export命令将容器的完整文件系统打包成tar文件,保存到外部驱动器:docker export <容器ID或容器名称> -o /mnt/external/container_fs.tar这个命令会捕获容器当前的所有文件、配置、已安装软件及数据,生成一个不包含容器元数据的文件系统快照。
二、他人恢复容器状态
拿到你的外部驱动器后,对方可以按以下步骤恢复:
挂载外部驱动器
同样将驱动器挂载到他们的Ubuntu主机:sudo mkdir -p /mnt/external sudo mount /dev/sdX1 /mnt/external导入文件系统为镜像
用docker import将tar包转为Docker镜像:docker import /mnt/external/container_fs.tar my-restored-image:latest启动恢复后的容器
基于生成的镜像创建并运行容器,即可获得与你原容器一致的文件系统状态:docker run -it --name restored-container my-restored-image:latest /bin/bash
补充:完整保留容器配置的方法
如果需要连同容器的端口映射、环境变量、启动命令等元数据一起备份,建议先将容器转为镜像,再导出镜像:
- 备份侧操作
# 将容器提交为镜像 docker commit <容器ID或名称> my-container-image:latest # 导出镜像到外部驱动器 docker save my-container-image:latest -o /mnt/external/container_image.tar - 恢复侧操作
# 导入镜像 docker load -i /mnt/external/container_image.tar # 运行镜像(原容器的元数据会被保留) docker run -d --name restored-container my-container-image:latest
注意事项
- 确保外部驱动器有足够存储空间,tar包大小与容器实际占用空间大致相当。
- 挂载驱动器时注意权限,必要时使用
sudo执行命令,或调整挂载目录的权限。
内容的提问来源于stack exchange,提问作者JaktensTid
相关产品推荐
相关产品推荐

