全球主机交流论坛备用站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

全球云38元起免备案V2EX搬瓦工VPS
SEO查询超级PING网站测速
Virmach特价鸡乌云漏洞吾爱破解
查看: 164|回复: 6

docker容器备份与恢复。

[复制链接]

151

主题

348

回帖

1479

积分

金牌会员

Rank: 6Rank: 6

积分
1479
发表于 2025-2-22 21:06:21 | 显示全部楼层 |阅读模式
20230417
备份 Docker 容器
方法 1:将容器导出为 .tar 文件
查看运行中的容器
运行以下命令列出当前容器:
bash
docker ps -a
找到你要备份的容器 ID 或名称。
停止容器(可选)
如果容器正在运行,可以先停止它(但不是必须的):
bash
docker stop 容器名称或ID
导出容器
使用 docker export 命令将容器的文件系统导出为 .tar 文件:
bash
docker export -o 备份文件名.tar 容器名称或ID
示例:
bash
docker export -o mycontainer_backup.tar mycontainer
验证备份
检查生成的 .tar 文件是否存在:
bash
ls -lh mycontainer_backup.tar
方法 2:提交容器为新镜像并备份
如果你想保留容器的配置和数据,可以将容器保存为一个新的镜像,然后备份该镜像。
提交容器为镜像
使用 docker commit 命令:
bash
docker commit 容器名称或ID 新镜像名称:标签
示例:
bash
docker commit mycontainer mycontainer_image:latest
备份镜像
使用 docker save 保存新镜像为 .tar 文件:
bash
docker save -o mycontainer_image.tar mycontainer_image:latest
恢复 Docker 容器
从 .tar 文件恢复(使用 docker export 备份的)
导入容器
使用 docker import 将 .tar 文件导入为一个新的镜像:
bash
docker import 备份文件名.tar 新镜像名称:标签
示例:
bash
docker import mycontainer_backup.tar myrestored_image:latest
运行新容器
使用新镜像创建一个容器:
bash
docker run -d --name 新容器名称 新镜像名称:标签
示例:
bash
docker run -d --name myrestored_container myrestored_image:latest
注意:docker export 备份的是文件系统快照,不包括容器运行时的状态(如内存中的数据)或挂载卷的数据。如果需要这些数据,需单独备份。
从镜像恢复(使用 docker commit 和 docker save 备份的)
加载镜像
使用 docker load 从 .tar 文件恢复镜像:
bash
docker load -i mycontainer_image.tar
运行容器
使用恢复的镜像启动一个新容器:
bash
docker run -d --name 新容器名称 mycontainer_image:latest
备份容器数据卷
如果容器使用了数据卷(volume)或绑定挂载(bind mount),这些数据不会包含在 docker export 或镜像中,需要单独备份。
查看容器挂载的数据卷
bash
docker inspect 容器名称或ID
查找 Mounts 部分,找到数据卷路径。
备份数据卷
使用 tar 命令备份数据卷内容:
bash
tar -cvf 数据卷备份.tar /path/to/volume
恢复数据卷
将备份解压到目标路径:
bash
tar -xvf 数据卷备份.tar -C /path/to/volume
MJJ,你的签名掉了~~~
回复

使用道具 举报

36

主题

392

回帖

1240

积分

金牌会员

Rank: 6Rank: 6

积分
1240
发表于 2025-2-22 21:21:44 | 显示全部楼层
搞那么复杂
MJJ,你的签名掉了~~~
回复 支持 反对

使用道具 举报

50

主题

1680

回帖

4508

积分

论坛元老

Rank: 8Rank: 8

积分
4508
发表于 2025-2-22 21:43:47 | 显示全部楼层
docker用的不多。感觉这是个挺鸡肋功能。
挂载的文件夹要另外再备份转移。
直接转移这些数据,新建容器运行就行了。
需要的数据都持久化。
至于说新建容器后,又进入里面,装了很多东西。需要备份这些。我没这用途。

现在我机器上,docker都是统一放一个文件,每个容器一个子文件夹,能用docker-comppose用这个。
直接用docker run运行的话,当时就把命令也记下来。
这样的话,以后换机器方便,不然要头疼。
MJJ,你的签名掉了~~~
回复 支持 反对

使用道具 举报

0

主题

13

回帖

50

积分

注册会员

Rank: 2

积分
50
发表于 2025-2-23 13:54:47 | 显示全部楼层
虽然现在用不上,但保存总没错
MJJ,你的签名掉了~~~
回复 支持 反对

使用道具 举报

11

主题

146

回帖

545

积分

高级会员

Rank: 4

积分
545
发表于 2025-2-23 18:09:42 | 显示全部楼层
万亩斜阳 发表于 2025-2-22 21:43
docker用的不多。感觉这是个挺鸡肋功能。
挂载的文件夹要另外再备份转移。
直接转移这些数据,新建容器运行 ...

大概一样的做法,子文件夹分开,需要持久化的数据就在子文件夹里,容器运行配置也在里面,直接备份这些文件夹完事
MJJ,你的签名掉了~~~
回复 支持 反对

使用道具 举报

17

主题

209

回帖

655

积分

高级会员

Rank: 4

积分
655
发表于 2025-2-22 21:43:00 | 显示全部楼层
其实打包push到hub也不是不可以,免费用户有一个私有镜像额度
MJJ,你的签名掉了~~~
回复 支持 反对

使用道具 举报

9

主题

266

回帖

973

积分

高级会员

Rank: 4

积分
973
发表于 2025-2-23 18:27:12 | 显示全部楼层
容器化最初的意义就是快销快装 只保留数据新建比较科学
MJJ,你的签名掉了~~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

展开

QQ|Archiver|手机版|小黑屋|全球主机交流论坛备用站

GMT+8, 2025-4-28 10:45 , Processed in 0.045659 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表