导出已有的docker容器

把 Docker 里的"整个容器"打包出来,其实有两种常见需求:
① 把正在运行的容器保存成镜像(image)
② 把镜像导出成一个可携带的文件(tar 包)

下面给你一个最干净、最可复现的流程,完全符合你一贯喜欢的"显式、可重建"风格。


🧱 一、将容器保存成镜像(commit)

如果你在容器里做了修改(安装软件、改配置),想把它固化下来:

复制代码
docker commit <容器名或ID> myimage:latest

示例:

复制代码
docker commit openvoice_container openvoice_backup:1.0

这样你就得到了一个新的镜像。


📦 二、将镜像导出为 tar 包(save)

把镜像打包成一个文件,方便迁移、备份、离线部署:

复制代码
docker save -o myimage.tar myimage:latest

示例:

复制代码
docker save -o openvoice_backup.tar openvoice_backup:1.0

得到的 openvoice_backup.tar 就是完整可移植的镜像文件。


🔄 三、在另一台机器导入(load)

把 tar 包复制到另一台机器后:

复制代码
docker load -i openvoice_backup.tar

导入后镜像就能直接运行:

复制代码
docker run -it --rm openvoice_backup:1.0

🧰 四、如果你想导出容器文件系统(export)

这是另一种方式,只导出容器的文件系统,不包含镜像层信息:

复制代码
docker export -o container_fs.tar <容器名或ID>

但一般不推荐用于可重建部署,因为它丢失镜像层信息、元数据、环境变量等。


🧭 你应该用哪种方式?

需求 推荐方式
完整备份、迁移、可重建 commit + save(最稳妥)
只要容器文件系统,不关心镜像层 export
想保持 Dockerfile 可维护性 重新构建镜像,而不是 commit

相关推荐
像风一样自由20202 小时前
52.Docker部署大模型应用从本地开发到服务化运行
运维·人工智能·docker·容器·大模型·智能体
陈陈CHENCHEN5 小时前
【Kubernetes】纯 IPv6 K8s 用 socat 打通 IPv4 服务
云原生·容器·kubernetes
江湖有缘6 小时前
Docker实战 | 使用Docker部署rmoments社交平台
jvm·docker·oracle
灯澜忆梦11 小时前
【docker】#4 | Docker 自定义镜像与 Dockerfile
运维·docker·容器
TTATTC11 小时前
Android 浏览器死活不弹证书框的那天,我用 .NET MAUI 给 WebView 写了一个 mTLS 拦截器
docker·开源
TTATTC11 小时前
百万行 Trace 交给 AI,方向和验证留给人,一套还原自定义 VMP 保护的分工方法
docker·开源
TTATTC11 小时前
从 proxy_pass 末尾斜杠到 WebAssembly 预压缩:深挖 Nginx 生产环境四大高频踩坑点
docker·开源
TTATTC12 小时前
消灭 AI 编程助手的幻觉代码:拆解 Google 官方文档 MCP 与三大云厂商知识检索架构
docker·开源
Wang's Blog12 小时前
Java 项目部署之 Docker工具快速入门: Docker Compose 初识与安装
java·开发语言·docker