-->
当前位置:首页 > DayDayUp > 正文内容

docker nginx容器升级

Luz2年前 (2022-07-05)DayDayUp5179

背景

接手项目nginx存在漏洞,需要升级nginx修复

image.png


发现现场nginx是docker版本,也不知道容器内是否做过其他配置修改 不敢直接删容器更新镜像启动


image.png



按照常规更新方法

下载源码--docker没有wget

安装wget--apt下载失败

更新apt源--还是莫名其妙失败

主机上wget下载完成使用docker cp拷进去--是拷进去了

解压,编译--没有make

安装make--陷入apt无法使用的死循环


解决方案

尝试直接替换二进制文件  /usr/sbin/nginx


在自己服务器内起一个新版的nginx容器 提取其中的

/usr/sbin/nginx 文件放置到现场容器的对应目录中

一开始复制的时候不要起nginx这个名字,否则容器会起不来,起一个nginx2啥的


中间报错缺少了几个库,或者库中没有相关函数

再次从自己的nginx容器中提取相关文件放置到容器(做好原库备份!!!)


image.png

最终nginx2可以执行了,此时可以尝试 cp nginx2 nginx


image.png

报错nginx正在使用,可以把nginx进程停止后覆盖,或者停止容器后搜索nginx2文件的位置

image.png

cd进入该目录 将nginx2改成nginx

image.png

容器正常运行


测试业务是否正常

image.png

升级完毕


可以再进容器验证nginx版本

image.png




总结

优点:非常安全,不涉及任何配置文件的修改,理论上一定可以成功(做好中间过程记录和文件备份)

缺点:如果原先没有做集群,业务会中断一段时间

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。