在将应用程序部署到服务器上时,应用程序与自身捆绑的内容与它从平台(操作系统和已安装的软件包)提供的内容之间通常存在分离.其中一点是平台可以独立于应用程序进行更新.例如,当需要紧急地将安全更新应用于平台提供的包而不重建整个应用程序时,这很有用.
传统上,通过执行包管理器命令在操作系统上安装更新版本的包(例如RHEL上的“yum update”),已经应用了安全更新.但随着Docker这样的容器技术的出现,容器映像基本上捆绑了应用程序和平台,那么使容器系统保持最新的规范方法是什么?主机和容器都有自己独立的软件包集,需要在主机上进行更新和更新,不会更新容器内的任何软件包.随着RHEL 7的发布,Docker容器特别受欢迎,听听Redhat推荐的处理容器安全更新的方法会很有趣.
关于一些选项的想法:
>让包管理器更新主机上的包不会更新容器内的包.
>必须重新生成所有容器映像以应用更新似乎打破了应用程序和平台之间的分离(更新平台需要访问生成Docker映像的应用程序构建过程).
>在每个正在运行的容器中运行手动命令似乎很麻烦,并且下次从应用程序发布工件更新容器时,更改可能会被覆盖.
所以这些方法都不令人满意.
解决方法
Docker镜像捆绑应用程序和“平台”,这是正确的.但通常图像由基本图像和实际应用程序组成.
因此,处理安全更新的规范方法是更新基本映像,然后重建应用程序映像.