docker nginx容器升级
接手项目nginx存在漏洞,需要升级nginx修复
发现现场nginx是docker版本,也不知道容器内是否做过其他配置修改 不敢直接删容器更新镜像启动
按照常规更新方法
下载源码--docker没有wget
安装wget--apt下载失败
更新apt源--还是莫名其妙失败
主机上wget下载完成使用docker cp拷进去--是拷进去了
解压,编译--没有make
安装make--陷入apt无法使用的死循环
解决方案
尝试直接替换二进制文件 /usr/sbin/nginx
在自己服务器内起一个新版的nginx容器 提取其中的
/usr/sbin/nginx 文件放置到现场容器的对应目录中
一开始复制的时候不要起nginx这个名字,否则容器会起不来,起一个nginx2啥的
中间报错缺少了几个库,或者库中没有相关函数
再次从自己的nginx容器中提取相关文件放置到容器(做好原库备份!!!)
最终nginx2可以执行了,此时可以尝试 cp nginx2 nginx
报错nginx正在使用,可以把nginx进程停止后覆盖,或者停止容器后搜索nginx2文件的位置
cd进入该目录 将nginx2改成nginx
容器正常运行
测试业务是否正常
升级完毕
可以再进容器验证nginx版本
总结
优点:非常安全,不涉及任何配置文件的修改,理论上一定可以成功(做好中间过程记录和文件备份)
缺点:如果原先没有做集群,业务会中断一段时间
来源:https://www.hyluz.cn/post/67875.html