首页 > 运维 > linux运维 > 正文

MinTalk | 吃一堑长一智的Docker之旅

看不見的法師
发布: 2025-07-09 10:58:21
原创
1051人浏览过

写在前面:

我已经开始后端开发工作整整三个月了!连我自己都感到惊讶,时间竟然过得如此之快!更让我着急的是,我怎么觉得自己还是那么菜!

尽管只有三个月的时间,但我逐渐接触到了各种服务器端开发所使用的工具和技术,这是一件非常有趣的事情。直到现在,我依然会时不时发现,原来为了解决这个问题,有这样一个开源的工具/库,真是神奇!技术栈也是越挖越深,需要慢慢填补...

在这段时间里,我使用最多的工具非Docker莫属!特别是在开始负责做LoadTest,也就是服务器压力测试之后,几乎每天都在部署服务,折腾Docker。期间,我当然也踩了不少坑,业务相关的就不说了,今天想和大家分享的是,使用Docker时的一些习惯上的陷阱。好的习惯是成功的一大半,少给自己挖坑,生活可以更美好...

MinTalk | 吃一堑长一智的Docker之旅

01

无法还原的Container

故事

某个天朗气清,惠风和畅的下午,当我终于顺利地把服务启动起来,觉得自己已经解决了之前遇到的所有问题之后,我自信满满地删除了目前正在运行的container,重新使用修改后的代码构建了一个新的image,作为我的最终版服务启动起来。

然而,这下就出问题了。在之前的container中,为了模拟线上的运行环境,我在另一台机器上使用flark搭建了一个简易后台,只负责一个接口的一种数据返回,其他什么也不能做,但这对我来说已经足够了。之后,我修改了正在搭建的服务器代码,让原本应该去远端调用的请求,发给了我的简易服务器,解决了这一步数据无法获取的问题。

然而,当我把新的container运行起来之后,我的简易服务器再也收不到任何请求了,请求全都没转发过去!于是我百思不得其解,各种尝试修改,都无法恢复这个功能。

直到后来,当我终于搞明白我以为有用的代码修改其实毫无用处时,我才想起来,之所以之前能成功运行,是因为我在之前的container中直接修改了host文件,硬把对远端域名的请求,转给了我的简易服务器IP。然而之后,我却忘了自己做过这个小手脚,还以为自己理解了代码呢!

MinTalk | 吃一堑长一智的Docker之旅

教训

以前Mars就提醒过我,使用docker要多记工作日记,把做过什么都记录下来,我这次才明白他说的意思...docker召之即来挥之即去的轻巧,同时也导致了它很容易丢失数据。在Docker官方的最佳实践中其实也指出了,container的生命应该是短暂的,随时可以干掉重来才是,那么,如果在container中做了手脚,自己又没有记录,或者及时同步到代码中,那就难免掉进同一条河里了。

PhotoG
PhotoG

PhotoG是全球首个内容营销端对端智能体

PhotoG 121
查看详情 PhotoG

毕竟,坑都是一样的,打开副本,遇见的还是一样的怪。

02

祸害万代的BaseImage

故事

在某个天朗气清,惠风和畅的下午,我的LoadTest脚本却一直卡在同一步。翻了半天日志,发现是某个https请求失败了,然而接收请求的服务好好地,我的服务也好好地,就是这个https请求一直失败。

在这个服务的container里研究来研究去,服务本身好像都没什么问题,接收方的container也被查了个遍,貌似也没问题。这时,帮我一起查问题的LT小哥,突然问我,你有没有把接收方的CACert证书,加到服务的秘钥仓库里?

我想了想,这步应该在这个服务的baseimage里就做了,应该没问题吧?

小哥翻了翻仓库,还真搜不出来。于是我们直接运行了一个baseimage的container,发现从这一步就没有我们需要的证书!原来,我以为加到了baseimage里面的功能,根本就是无效的。

教训

Docker的image是一层一层构建出来的,每个image都会有一个baseimage,最基础的image也许是centos的镜像,然而,为了保证每个服务都有一些共同支持的功能,我们会在centos镜像之上,再编译一个baseimage,在里面添加所有服务都需要有的功能,比如必须的CACert证书,数据采集的脚本等等。

MinTalk | 吃一堑长一智的Docker之旅

然而,baseimage编译出来之后,因为其本身没有实际用途,所以我并没有对它进行验证,这就是我把自己坑得最惨的一点。一旦baseimage有问题,之后使用它作为基础的image就全都有问题。而且因为问题出在前一个image,绕了一圈儿之后,问题藏得更深了。

每个image编译完之后,务必及时验证它所应当提供的功能,否则layer越盖越多,等你发现问题,已经很难想到问题老早就出现了!


以上就是MinTalk | 吃一堑长一智的Docker之旅的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号