如何将 Docker 镜像放置在 CoreOS 中的 NFS 共享之上?

如何将 Docker 镜像放置在 CoreOS 中的 NFS 共享之上?

我已经安装了 CoreOS,它默认使用大小为 100GB 的环回设备,并且我很容易就达到了这个限制。

我的第一个想法是使用 NFS 将所有图像放在我的 NAS 顶部,然后简单地将其安装到目录顶部,/var/lib/docker但没有成功。

现在我发现了这个文章看起来 docker 会以某种方式在任何类型的存储之上创建块设备,以便使用它的 CoW 快照,这可能就是为什么我第一次尝试在图像目录之上简单地安装 NFS 共享时没有成功的原因。这让我有点害怕。为什么不使用纯 NFS 和存储的本机快照?我希望对此有一个好的解释。无论如何我都需要做这个奇怪的事情。我是 docker 和 CoreOS 的新手,不知道如何正确地做到这一点。所以问题是:如何挂载 NFS 共享并将其用于 CoreOS 上的所有图像?

答案1

好消息是,你不是第一个需要这样做的人。Docker 无法使用直接 NFS,因为它需要对扩展属性 (xttrs) 的支持才能存储内核功能、SELinux 上下文等选项。通过使用设备映射器在远程存储上创建虚拟化块设备,您可以提供所需的内核机制,以便通过辅助机制利用 Docker。虽然可以通过dm.loopdatasize 选项,正如他们在 Docker 页面上明确指出的那样"Note: This option configures devicemapper loopback, which should not be used in production.".

最终这归结于对底层存储的要求。Docker 只是使用内核提供的机制,而不是自己创造奇迹。

相关内容