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

Docker学习(十六)踩坑,如何将对容器的修改同步到基础镜像中

目录

    • 1.背景
    • 2.解决方法
      • 1)将容器文件进行归档
      • 2)创建一个新的 Dockerfile
      • 3)构建新的基础镜像
    • 3.注意事项
    • 4.commit命令踩坑记录

1.背景

最近接手了一个docker服务,现需要对镜像进行修改,原始的 Dockerfile 已经丢失,只能通过先修改容器,然后将容器中的修改同步到镜像当中,那么该如何操作呢?


2.解决方法

首先,Docker 不支持直接将容器中的修改同步到基础镜像中,因为容器的设计初衷就是暂时运行一个应用程序或服务,并随时可以进行更改或删除。

因此,要同步修改到基础镜像,需要执行以下步骤:

1)将容器文件进行归档

通过 export 将容器归档为一个tar文件,以便将容器中的修改同步到之前镜像中。命令如下:

# 此命令将导出容器的完整文件系统
docker export [container-id] > container.tar

2)创建一个新的 Dockerfile

接下来,需要为新的基础镜像创建一个新的 Dockerfile。在 Dockerfile 中,需要使用 FROM 指令指定旧的基础镜像,并使用 ADD 指令将 tar 文件添加到新的基础镜像中。例如:

FROM [old-image]
ADD container.tar /

3)构建新的基础镜像

使用新的 Dockerfile 构建新的基础镜像,构建后的镜像中包含容器中的修改内容:

# 注意最后面有一个点
docker build -t [new-image] .

3.注意事项

  • 这种同步修改到基础镜像的方法并不推荐使用,因为它可能会导致镜像的不一致性。
  • 更好的方法是在 Dockerfile 中描述应用程序或服务的所有依赖项和配置,并使用版本控制来管理代码和配置文件。
  • 这样可以确保每次构建镜像时都会得到一致的结果,并使镜像更加可靠和可重复。

4.commit命令踩坑记录

如果想将对容器的修改内容同步到基础镜像中,千万不要使用 commit 命令将容器打包成镜像!!!

  • 这是因为当镜像被创建为容器后,由于命令的执行,除了你想同步到镜像的修改内容之外,还有很多文件被改动或添加了。如果是安装软件包、编译构建,将会有大量的无关内容被添加进来,导致镜像极为臃肿

  • 根据镜像所使用的分层存储的概念,除当前层外,之前的每一层都是不会发生改变的,换句话说,任何修改的结果仅仅是在当前层进行标记、添加、修改,而不会改动上一层。如果使用 docker commit 制作镜像,后期修改的话,每一次修改都会让镜像更加臃肿一次,所删除的上一层的东西并不会丢失,会一直如影随形的跟着这个镜像,即使根本无法访问到。这会让镜像更加臃肿。

整理完毕,完结撒花~ 🌻





参考地址:

1.使用docker commit将修改后的容器保存为镜像及其使用注意事项,https://blog.csdn.net/a772304419/article/details/123199579

相关文章:

Docker学习(十六)踩坑,如何将对容器的修改同步到基础镜像中

目录1.背景2.解决方法1)将容器文件进行归档2)创建一个新的 Dockerfile3)构建新的基础镜像3.注意事项4.commit命令踩坑记录1.背景 最近接手了一个docker服务,现需要对镜像进行修改,原始的 Dockerfile 已经丢失&#xff…...

食品与疾病关系预测赛题

和鲸平台数据分析实战 题目:食品与疾病关系预测算法赛道 一、赛题描述 食品与疾病关系预测算法赛道 越来越多的证据表明,食物分子与慢性疾病之间存在关联甚至治疗关系。营养成分可能直接或间接地作用于人类基因组,并调节参与疾病风险和疾病…...

Symbol

Symbol是ES6新增的一种基本数据类型 它用来表示独一无二的值, 通过Symbol函数生成 Symbol前面不能加new ,创建symbol类型指的时候传入一个参数,这个参数需要是字符串 使用Symbol函数创建一个symbol类型值,可以给它传入一个字符串参数&#xf…...

NC65 对上年度反结账,调整数据后重新结账后,对本年度年初重算时系统报错:更新记数错误。

1、对上年度反结账,调整数据后重新结账后,对本年度年初重算时系统报错:更新记数错误。 解决方案: 1、在期初余额节点,按Ctrl+ALT+A重建期初凭证; 2、到结账节点,重建余额表,选择有问题的财务核算账簿,注意:会计期间要放空; 3、到期初余额节点,将刚才删除期初数据的…...

位运算相关

文章目录一、求1的个数二、另类加法三、数组中出现一次的数字四、数组中出现一次的数字变形一、求1的个数 二进制中1的个数 法一:逐位判断 根据与&运算 n&10,说明n的最右边一位为0 n&11,说明n的最右边一位为1 所以思路就是&…...

Linux进程信号(产生、保存、处理)/可重入函数概念/volatile理解/SIGCHLD信号

首先区分一下Linux信号跟进程间通信中的信号量,它们的关系就犹如老婆跟老婆饼一样,没有一毛钱的关系。 信号的概念 信号的概念:信号是进程之间事件异步通知的一种方式,属于软中断。比如:红绿灯是一种信号&#xff0c…...

锯齿数组 - 贪心

文章目录锯齿数组 -贪心(不过挺像滑动窗口的)1144. 递减元素使数组呈锯齿状锯齿数组 -贪心(不过挺像滑动窗口的) 1144. 递减元素使数组呈锯齿状 题目链接:1144. 递减元素使数组呈锯齿状 题目大意:给你一个…...

[CVPR 2022] Balanced Contrastive Learning for Long-Tailed Visual Recognition

Contents IntroductionMethodPreliminariesBalanced Contrastive Learning (BCL)Drawbacks of SCLClass-averagingClass-complementLower bound of BCLOptimization with Logit CompensationFrameworkExperimentReferencesIntroduction 作者发现对于在长尾数据集上,Supervised…...

23种设计模式-工厂模式

工厂模式是一种创建型设计模式,它提供了一种创建对象的方式,而无需将具体的对象创建逻辑暴露给客户端。在Java中,工厂模式常常用于创建复杂对象或对象的构造过程涉及到多个步骤的情况。 在Android开发中,工厂模式也经常被使用&am…...

Linux操作系统学习(进程等待)

文章目录进程等待进程等待的必要性如何进程等待waiwaitpid验证进程等待 ​ 我们知道fork函数可以创建一个子进程,而子进程通常是替父进程完成一些任务,而父进程在fork之后需要通过wait/waitpid等待子进程退出。这就是进程等待 进程等待的必要性 通过获…...

Docker学习(十八)load 和 import 命令的区别

Docker 中有两个命令可以将本地文件系统中的 tar 文件导入到 Docker 中:docker load 和 docker import。尽管它们的作用类似,但它们之间有一些重要的区别。 1.使用方式的不同: docker load 的使用示例: docker load --input tes…...

mysql中的事务

在日常生活中,我们会遇到一个场景,那就是在转账的时候,A有1000块钱,要给B转账500,那么最后的结果是A有500,B有500,但是也有可能出现A没有钱了,B有1000块,或者在转账过程中卡顿,这是不符合逻辑的,那么这个时候就要使用事务来解决问题 事务就是把一堆sql语句打包成一个整体,要么…...

《C++ Primer Plus》第18章:探讨 C++ 新标准(9)

编程练习 下面是一个简短程序的一部分&#xff1a; int main() {using namespace std;// list of double deduced from list contentsauto q average_list ({15.4, 10.7, 9.0});cout << q << endl;// list of int deduced from list contentscout << averag…...

记录一次PWM信号异常问题

问题我使用单片机输出PWM控制机械臂&#xff0c;但是控制过程中&#xff0c;机械臂总是会出现莫名的抽动。利用示波器测试PWM信号&#xff0c;发现信号正常。过程&#xff08;1&#xff09;在反复的测试过程中&#xff0c;队友提出&#xff0c;将示波器的地线放在左侧的GND波形…...

简单了解---性能测试

目录 一、什么是性能测试 二、常见的性能测试指标 1、并发 2、响应时间 3、事务 4、点击率 5、吞吐量 6、资源利用率 三、性能测试的分类 1、一般测试 2、负载测试 3、压力测试 4、稳定性测试 四、为什么要做性能测试&#xff1f; 五、影响性能的因素有哪些&…...

1.机器学习笔记第一周

机器学习利用领域&#xff1a; 1&#xff1a;随着网络数据增大&#xff0c;需要搜集用户的数据&#xff0c;做喜好性偏向判断等。 2&#xff1a;只要有数据的&#xff0c;无论是医疗领域&#xff0c;还是基因领域都是需要机器学习来发现数据密码。 3&#xff1a;机器自我学习…...

若依学习(前后端分离版)——启动时发生了啥?(@PostConstruct)(mybatis log free)

我们可以发现若依启动时执行了一些sql我们可以安装一个插件mybatis log free 来更好的进行sql查看 &#xff0c;安装后需要修改一下若依的日志配置如下查看日志&#xff0c;我们发现执行了三个方法&#xff08;&#xff09;&#xff0c;分别查询了一些数据。以第二个方法为例子…...

每日十问9c++-内存模型和名称空间

每日十问9c内存模型和名称空间 1.对于下面的情况&#xff0c;应使用哪种存储方案? a.homer 是函数的形参。 b. secret变量由两个文件共享。 c.topsecret 变量由一个文件中的所有函数共享&#xff0c;但对于其他文件来说是隐藏的。 d. beencalled 记录包含它的函数被调用的次数…...

【python】JSON数据类型与Python数据类型之间的转化

注&#xff1a;最后有面试挑战&#xff0c;看看自己掌握了吗 文章目录JSON格式文件JSON格式序列化与反序列化作用JSON常用数据结构键值对的集合值的有序列表JSON数据类型与Python数据类型之间的转化JSON格式和python的区别读写json文件dump 把python 写到json文件load 把json写…...

Spring——什么是事务?传播行为?事务隔离级别有哪些?

思维导图一、什么是事务&#xff1f;多条DML要么同时成功&#xff0c;要么同时失败Transaction&#xff08;tx&#xff09;二、事务的四个过程&#xff1a;开启事务&#xff08;start transaction&#xff09;执行核心业务代码提交事务&#xff08;如果核心业务处理过程中没有出…...

Python MCP服务端框架源码剖析(2024最新LTS版内核解密)

第一章&#xff1a;Python MCP服务端框架源码剖析&#xff08;2024最新LTS版内核解密&#xff09;Python MCP&#xff08;Modular Control Protocol&#xff09;服务端框架2024 LTS版标志着其架构从单体调度向轻量级异步模块总线的重大演进。该版本基于 Python 3.11 构建&#…...

3个突破限制步骤:res-downloader让网络资源获取变得无拘无束

3个突破限制步骤&#xff1a;res-downloader让网络资源获取变得无拘无束 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 在数…...

Fish-Speech-1.5在短视频生产的应用:批量生成多语种配音方案

Fish-Speech-1.5在短视频生产的应用&#xff1a;批量生成多语种配音方案 1. 引言 短视频内容创作正面临着一个普遍痛点&#xff1a;多语言配音成本高、周期长。传统方式下&#xff0c;一个MCN机构要为一条短视频制作中文、英文、日文三种语言的配音&#xff0c;需要分别联系不…...

RWKV7-1.5B-g1a轻量部署方案:中小企业AI落地首选,年省GPU成本超40%

RWKV7-1.5B-g1a轻量部署方案&#xff1a;中小企业AI落地首选&#xff0c;年省GPU成本超40% 1. 为什么选择RWKV7-1.5B-g1a 在当今AI技术快速发展的背景下&#xff0c;中小企业往往面临高昂的GPU计算成本和技术门槛。rwkv7-1.5B-g1a作为一款基于RWKV-7架构的多语言文本生成模型…...

FreeRTOS数据通信避坑指南:为什么我的MessageBuffer总是接收失败?

FreeRTOS消息缓冲区实战&#xff1a;从接收失败到高效通信的深度解析 第一次在FreeRTOS项目中使用MessageBuffer时&#xff0c;我遇到了一个令人抓狂的问题——明明发送端显示消息已成功写入&#xff0c;接收端却总是返回0字节。调试器显示缓冲区非空&#xff0c;但xMessageBuf…...

HarmonyOS6 半年磨一剑 - RcCheckboxGroup 组件与全选不确定态机制深度解析

文章目录前言一、RcCheckboxGroup 内部状态同步1.1 双层状态管理1.2 选中状态判断二、布局渲染架构2.1 横向与纵向的渲染分支2.2 itemGap 的类型安全处理2.3 属性透传机制三、全选与不确定态&#xff08;indeterminate&#xff09;3.1 三态状态机3.2 全选逻辑实现3.3 indetermi…...

PFC5.0代码:含三种矿物组成的岩石或类岩石材料GBM单轴压缩2d算例代码,仅供学习与提升

PFC5.0代码&#xff0c;含三种矿物组成的岩石或者类岩石材料&#xff0c;GBM&#xff0c;单轴压缩2d&#xff0c;算例代码仅供学习以及提升 打开PFC5.0的建模界面&#xff0c;突然想把花岗岩里的石英、长石、云母做成颗粒组合。先整点暴力的——直接拿球体颗粒拼成矿物晶粒&…...

Kubernetes 环境下 SkyWalking 的高效部署与性能调优

1. Kubernetes 环境下的 SkyWalking 部署实战 第一次在 Kubernetes 上部署 SkyWalking 时&#xff0c;我踩了不少坑。记得当时为了调试一个存储配置问题&#xff0c;整整熬了两个通宵。现在回想起来&#xff0c;如果当时有人能给我一份详细的实战指南&#xff0c;至少能节省 80…...

VideoAgentTrek Screen Filter 大规模部署成本分析:GPU资源优化配置指南

VideoAgentTrek Screen Filter 大规模部署成本分析&#xff1a;GPU资源优化配置指南 最近和几个做视频内容审核的朋友聊天&#xff0c;大家聊得最多的不是技术有多牛&#xff0c;而是“这玩意儿跑起来到底要花多少钱”。确实&#xff0c;像VideoAgentTrek Screen Filter这类视…...

AI浪潮冲击下,前端该何去何从

&#x1f30a; 初级前端工程师&#xff1a;向“深水区”扎根技能树与学习路径定位&#xff1a;面向初级前端开发工程师&#xff0c;聚焦底层原理、工程化思维与可验证的实战输出&#xff0c;构建 AI 时代不可替代的技术护城河。&#x1f4d0; 核心原则&#xff08;避坑指南&…...