当前位置: 首页 > news >正文

docker copy生成一个新image

从现有容器创建新镜像。这里有几种"复制"或创建新镜像的方法:

方法一:docker commit(从容器创建镜像)

这是最直接的"复制"方式,将运行中容器的状态保存为新镜像:

bash

复制

# 1. 先运行一个容器(可以是已存在的) docker run -it --name my_container ubuntu bash # 在容器内做一些修改,比如安装软件 # 2. 提交容器为新镜像(类似"复制") docker commit my_container my_new_image:latest # 3. 查看新镜像 docker images | grep my_new_image

带元数据的提交:

bash

复制

docker commit \ -a "作者名字" \ -m "安装了nginx和vim" \ my_container \ myapp:version2.0

方法二:docker tag(镜像打标签)

给现有镜像创建一个新名称/标签(快速"复制"引用):

bash

复制

# 给现有镜像打新标签(类似文件系统的硬链接) docker tag myapp:latest myrepo/myapp:backup-20241218 # 效果:两个标签指向同一个镜像ID docker images # REPOSITORY TAG IMAGE ID # myapp latest abc123... # myrepo/myapp backup-20241218 abc123... ← 同一个ID

方法三:Dockerfile +COPY指令

标准做法:通过Dockerfile构建新镜像:

dockerfile

复制

# Dockerfile FROM myapp:latest COPY ./config.yml /app/config.yml RUN apt-get update && apt-get install -y vim

bash

复制

docker build -t myapp:customized .

方法四:docker export+import(容器快照)

导出容器文件系统并作为新镜像导入(会丢失历史和元数据):

bash

复制

# 1. 导出容器(不是镜像!)为tar包 docker export -o container.tar my_container # 2. 导入为新镜像(只有一层,无历史) docker import container.tar my_new_image:imported

方法五:docker save+load(镜像迁移)

备份镜像并在其他地方恢复:

bash

复制

# 1. 保存镜像到文件 docker save -o myapp.tar myapp:latest # 2. 在另一台机器上加载(仍是同一个镜像) docker load -i myapp.tar

对比与选择

表格

复制

方法用途保留历史层推荐度
docker commit快速保存容器状态✅ 是⭐⭐⭐ 调试用
docker tag创建别名/版本✅ 是⭐⭐⭐⭐⭐ 必备
Dockerfile build标准化构建✅ 是⭐⭐⭐⭐⭐最佳实践
export/import容器迁移❌ 否⭐⭐ 特殊场景
save/load镜像备份迁移✅ 是⭐⭐⭐⭐ 常用

重要警告

⚠️不要滥用docker commit
这会创建"黑盒"镜像,无法追溯构建过程。生产环境应始终使用Dockerfile:

bash

复制

# 不推荐(难以维护) docker run ubuntu apt-get install -y nginx docker commit <container_id> mynginx:manual # 推荐(可追踪、可重复) # Dockerfile: # FROM ubuntu # RUN apt-get install -y nginx docker build -t mynginx:automated .

总结

  • 快速复制 →docker tag

  • 保存调试状态 →docker commit

  • 正规流程 →Dockerfile+docker build

http://www.cnnetsun.cn/news/138519.html

相关文章:

  • linux——进程状态
  • 推荐一个langchain开发工具包:langchain-dev-utils
  • 有序二叉树节点的删除
  • “即插即用”的智能升级:具身智能模块如何破解机器人产业化难题
  • AI驱动的芯片设计革命:当算法开始替代“老师傅”的经验
  • 基于深度学习的交通标志检测系统(YOLOv10+YOLO数据集+UI界面+Python项目源码+模型)
  • 基于深度学习的大豆检测系统(YOLOv10+YOLO数据集+UI界面+Python项目源码+模型)
  • 基于深度学习的苹果腐烂检测系统(YOLOv10+YOLO数据集+UI界面+Python项目源码+模型)
  • 基于深度学习的食物检测系统(YOLOv10+YOLO数据集+UI界面+Python项目源码+模型)
  • 基于深度学习的数字识别检测系统(YOLOv10+YOLO数据集+UI界面+Python项目源码+模型)
  • STM32定时器定时中断
  • 打破离散制造“内卷”:工业智能体(AI Agent)落地的五大核心原则
  • C语言 操作符 关系操作符 笔记
  • 2025年战略咨询在行业标准演进中的推动力
  • 【电商API接口】电商平台价格监控行业全景:数据驱动的定价革命
  • java计算机毕业设计蔬菜配送系统 生鲜直配平台的设计与实现 社区蔬菜一站式采购与配送管理系统
  • dubbo源码之一次RPC请求的生死之旅(基于Dubbo 2.7.8)
  • 基于SpringBoot+Vue的web城乡居民基本医疗信息管理系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】
  • 【完整源码+数据集+部署教程】手势与标志识别检测系统源码[一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]
  • 03.统计学机器学习
  • [Poi2011]Lightning Conductor题解
  • 一文读懂大模型:收藏级教程,助你从入门到精通
  • Nginx云计算大数据——安装AND版本升级(普通升级+平滑升级+失败回滚)
  • GPT-5.2 实测数据流出:逻辑推理性能翻倍,大模型“幻觉”真的被终结了吗?
  • SQL SERVER——通过计划任务方式每月对配置数据、审计数据等进行备份
  • 前端——跨平台桌面应用开发实践
  • OpenAI 的反击!GPT-5.2 强行拉开代差,Gemini 3 和 Claude 4 还有机会吗?
  • 零售打工人加薪难?靠这张证,我在激烈竞争里站稳了脚跟
  • 基于springboot的多媒体素材库的开发与应用毕业论文+PPT(附源代码+演示视频)
  • 从离线语音到多模态智能体四博智联 AI 硬件整体解决方案全景解析