使用Docker处理基本映像更新相对容易。在Docker Hub上,它是完全自动化的。自定义CI系统易于编写脚本以观看基本图像ID。
对于我找不到一个好的解决方案,就是在包管理器(如apt)处理的软件映像内部处理更新。
例如,考虑一个从debian:stretch开始并安装openssl和ca证书的Docker映像。当其中一个软件包在apt信息库中收到更新时,如何自动重建映像?没有任何常规方法可以处理此问题,因为既不会发生SCM更改,也不会发生基本图像更改。
我认为,处理此问题的正确方法是检测映像中的软件包更新,重建映像,并让Kubernetes / Docker主机在存储库中的映像更新时自动重启容器。 (如果您要自动进行容器更新-我可以这样做)
我能想到的唯一方法是在运行映像的CI上运行脚本,但用返回大量可用软件包升级并强制--no-cache构建的脚本替换CMD指令。数字大于0。这可以复制无人值守升级的行为,但更适合Docker这样的容器环境。
然后可以定期运行,例如每小时,并且会在软件包升级可用时自动推送新图像。
有人在做这样的事情还是有类似的解决方案?我们的解决方法是每天仅使用--no-cache重建所有映像,即使没有任何更改。虽然这样做有效,但却浪费了很多资源,并导致不必要的每日容器重启。