作为SystemImager开发者,我想使用docker管理图像(而不是使用图像服务器上的简单目录)。 在图像服务器上,我将运行docker,我可以启动容器来更新内容(yum update,更改配置,......)并跟踪更改并能够还原更改。
在节点上部署物理映像时,我会使用部署代码PXE引导特定的initramfs。现在,它使用带rsync的rsync或scp或ssh隧道或rsync的nfs来从图像服务器中检索和安装图像。
此方法的问题是目录没有版本化,如果图像更改错误,我无法恢复到以前的图像。
我想使用(使用initramfs)相当于: docker --server imageserver --image mynodeimage:1.0 save | tar x -C / sysroot
问题是它需要安全的tls cnx,但我不能重建imager initramfs来包含它,并且拥有一个不安全的docker守护进程也不是一个好的解决方案。(我用一个不安全的dockerd成功测试了解决方案,但是完成设置并与prod环境不兼容)
然后,有没有办法在我的图像服务器上设置公共docker hub(dockerd运行的地方),其中图像可以从没有运行dockerd的initramfs动态下载(tarball到stdout)没有两倍的空间来做一个docker pull + docker save | tar x -C ...
我见过curl的方法,但我需要在本地存储blob,然后重新组合结果。这是不可能的,因为它需要两倍的空间(一个用于存储blob,一个用于提取结果)。 也许有一个解决方案以正确的顺序一个接一个地提取blob?
或者:是否有替代技术可以在图像服务器上保存容器(带版本控制)中的图像并从initramfs极简主义环境中检索它们而不使用分段目录?