With the three new tools- Smith, Crashcart and Railcar, the Oracle is helping development teams build and operate containers. The tools are designed to tackle containerization challenges commonly faced.
“Containers are more popular than ever. Here at Oracle, we use containers for many of our cloud services. While preparing for containers in production, we developed tools to help with building and operating containers. Today we are happy to announce that we are Open Sourcing these tools so that others can benefit from our work. You can find smith, crashcart, and railcar on the oracle github page” Vish Abrams, architect for cloud development at Oracle said in its post.
Oracle Smith — Secure Microcontainer Builder
Oracle’s Smith is a tool that solves these issues by making container builds more consistent and secure. It builds microcontainers from rpms, yum repositories, or even existing docker containers. For more information on the operational challenges that led to our usage of microcontainers check out The Microcontainer Manifesto.
Oracle Crashcart — Microcontainer Debugging Tool
When containers are minimized for production use, missing tools make it more challenging for operators to diagnose and remedy any issues that arise. Most debugging can be done from the host, but sometimes you need access to the filesystem as the container sees it. Crashcart was built for this use case. It allows you to load a set of binaries into a running container so that you can figure out what might be going wrong. Find out why side-loading binaries is hard and how crashcart accomplishes it in Hardcore Container Debugging.
Oracle Railcar — Alternative Container Runtime
Go is a poor choice of language for a container runtime. To understand some of the problems, you can read the blog post by weave works. In order to work around this issue and others, runc (the default implementation of the oci-runtime spec) has some code written in c that runs before the go runtime starts. Go is a great language, but for small system utilities that need tight control over threads and make a high volume of syscalls, there are better options. Rust gives low-level control like c, but is memory safe and avoids whole classes of bugs and vulnerabilities. There is more information about the development of railcar in Building a Container Runtime in Rust.