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