随着容器技术盛行,Oracle 也开始在云服务中应用容器技术,在准备应用的同时,Oracle 也开发了相关工具便于构建和维护容器。现在可以高兴的宣布,Oracle 开发的这几款工具已经开源,希望能够帮到大家。
可在 Oracle GitHub(https://github.com/oracle/)页面上找到 Smith(https://github.com/oracle/smith)、Crashcart(https://github.com/oracle/crashcart)和 Railcar(https://github.com/oracle/railcar)工具的相关资料。
Smith——安全微容器构建者
传统的容器构建过程需要一系列的复杂操作步骤。Smith 就是一个解决构建一致性和安全性的问题的微容器构建工具。可方便的通过 rpms、yum 库,甚至已有容器来构建微容器。更多构建微容器的信息可参考资料:the Microcontainer Manifesto(http://t.cn/RKyzvC4)
Crashcart——微容器调试工具
若生产环境应用容器的精简配置,导致的诊断工具缺失,对运维来说是一个巨大挑战。虽然大部分诊断可在主节点上完成,但有时也需要在容器节点可访问的文件系统上进行诊断。
Crashcart 便是应用在这个场景下,它为正在运行的容器加载一组数据用来定位故障原因。了解 crashcart 是如何定位单边加载数据故障的原理可参考资料:Hardcore Container Debugging(http://t.cn/RK0nVK8)
Railcar——可选的容器 Runtime
Go 语言对于容器 runtime 不一定是最佳选择。(注:runtime 是通过命名空间和 cgroups 完成隔离的组件。Go 语言对于容器镜像和 CLIS 仍然是一个非常明智的选择。)为便于理解,可阅读博客: Linux Namespaces And Go Don’t Mix(http://t.cn/RSxwn9W)。
Runc(runc 是 oci runtime 的默认组件)的部分代码是由C语言编写,在 Go 运行时态启动之前调用的。Go 虽然是一个伟大的语言,但对于仅需轻量线程控制及大量系统调用的小型组件而言,还有更好的选择。Rust 语言则可以提供类似C语言的轻量控制,但是内存安全且避免了类的 BUG 和漏洞。更多 Railcar 的开发信息可参考资料:Building a Container Runtime in Rust(http://t.cn/RoQHbnc)。