在将应用程序部署到服务器上时,应用程序本身与捆绑在一起的东西与平台(操作系统和已安装的程序包)期望提供的东西之间通常存在分隔。其中一点是,平台可以独立于应用程序进行更新。例如,当需要紧急将安全更新应用到平台提供的软件包而不重建整个应用程序时,这很有用。
传统上,仅通过执行程序包管理器命令来应用安全更新,以在操作系统上安装程序包的更新版本(例如RHEL上的“ yum更新”)。但是随着诸如Docker之类的容器技术的出现,容器映像实际上将应用程序和平台都捆绑在一起,如何使具有容器的系统保持最新状态?主机和容器都有各自独立的软件包集,需要在主机上进行更新和更新不会更新容器内的任何软件包。随着RHEL 7的发布,尤其是Docker容器成为特色,很高兴听到Redhat推荐的处理容器安全性更新的方法是什么。
关于以下几种选择的想法:
- 让软件包管理器更新主机上的软件包将不会更新容器内的软件包。
- 必须重新生成所有容器映像以应用更新似乎打破了应用程序与平台之间的分隔(更新平台需要访问生成Docker映像的应用程序构建过程)。
- 在每个正在运行的容器中运行手动命令似乎很麻烦,并且在下次从应用程序发布工件更新容器时,更改有被覆盖的风险。
因此,这些方法似乎都不令人满意。
docker pull debian/jessie
更新映像,然后重建现有映像,然后停止容器并再次运行它们(与新图片)。我构建的映像与以前的映像具有相同的名称,因此通过脚本完成启动。然后,我删除“未命名”图像。我当然希望有更好的工作流程。