cpa 发表于 2025-2-22 21:06:21

docker容器备份与恢复。

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

我不是大傻瓜 发表于 2025-2-22 21:21:44

搞那么复杂

万亩斜阳 发表于 2025-2-22 21:43:47

docker用的不多。感觉这是个挺鸡肋功能。<br />
挂载的文件夹要另外再备份转移。<br />
直接转移这些数据,新建容器运行就行了。<br />
需要的数据都持久化。<br />
至于说新建容器后,又进入里面,装了很多东西。需要备份这些。我没这用途。<br />
<br />
现在我机器上,docker都是统一放一个文件,每个容器一个子文件夹,能用docker-comppose用这个。<br />
直接用docker run运行的话,当时就把命令也记下来。<br />
这样的话,以后换机器方便,不然要头疼。

寒喵 发表于 2025-2-23 13:54:47

虽然现在用不上,但保存总没错

loneking 发表于 2025-2-23 18:09:42

<div class="quote"><blockquote><font size="2"><a href="https://hostloc.com/forum.php?mod=redirect&goto=findpost&pid=16247891&ptid=1391135" target="_blank"><font color="#999999">万亩斜阳 发表于 2025-2-22 21:43</font></a></font><br />
docker用的不多。感觉这是个挺鸡肋功能。<br />
挂载的文件夹要另外再备份转移。<br />
直接转移这些数据,新建容器运行 ...</blockquote></div><br />
大概一样的做法,子文件夹分开,需要持久化的数据就在子文件夹里,容器运行配置也在里面,直接备份这些文件夹完事

这是小号 发表于 2025-2-22 21:43:00

其实打包push到hub也不是不可以,免费用户有一个私有镜像额度

Laa 发表于 2025-2-23 18:27:12

容器化最初的意义就是快销快装 只保留数据新建比较科学
页: [1]
查看完整版本: docker容器备份与恢复。