原文はこちら。
https://blogs.oracle.com/developers/three-new-open-source-container-utilities
コンテナは以前に比べて人気があり、ここOracleでも、数多くのクラウドサービスのためにコンテナを使っています。本番環境でコンテナを準備する際に、コンテナの構築および運用が楽になるようなツールを開発しました。本日、これらのツールをオープンソースとして公開し、皆さんにお使いいただけるようにしたことを発表でき、うれしく思います。これらのツールはそれぞれ、Smith、Crashcart、Railcarといい、OracleのGitHubページからご利用いただけます。以下で説明します。
https://blogs.oracle.com/developers/three-new-open-source-container-utilities
コンテナは以前に比べて人気があり、ここOracleでも、数多くのクラウドサービスのためにコンテナを使っています。本番環境でコンテナを準備する際に、コンテナの構築および運用が楽になるようなツールを開発しました。本日、これらのツールをオープンソースとして公開し、皆さんにお使いいただけるようにしたことを発表でき、うれしく思います。これらのツールはそれぞれ、Smith、Crashcart、Railcarといい、OracleのGitHubページからご利用いただけます。以下で説明します。
Smith
https://github.com/oracle/smith
Crashart
https://github.com/oracle/crashcart
Railcar
https://github.com/oracle/railcar
Smith -- Secure Microcontainer Builder
私たちは、これまでのDockerの利用で運用上の問題に遭遇しました。Smithは、整合性がありセキュアなビルドを実現することでこれらの問題を解決するツールです。rpmやyumリポジトリ、あるいは "fat"なDockerコンテナからマイクロコンテナ(Microcontainer)をビルドします。The Microcontainer Manifesto And The Right Tool for the Jobマイクロコンテナの利用に行き着いた運用上の課題についての詳細は、The Microcontainer Manifestoをご覧ください。
http://blogs.oracle.com/developers/the-microcontainer-manifesto
Crashcart -- Microcontainer Debugging Tool
コンテナを本番環境での利用のために最小限にすると、ツールがなければ運用管理者が発生した問題を診断、修復することが難しくなります。ほとんどのデバッグはホストから実施できますが、時にはコンテナが参照しているがゆえに、ファイルシステムへのアクセスが必要な場合があります。Crashcartはこうしたユースケースのために作成されました。Crashcartを使うと、バイナリを実行中のコンテナにロードすることができるので、何がうまくいっていないのかを把握できます。バイナリのサイドローディングが困難な理由とCrashcartがその課題を解決するしくみは、以下のエントリをご覧ください。Hardcore Container Debugging
https://blogs.oracle.com/developers/hardcore-container-debugging
Railcar -- Alternative Container Runtime
Goはコンテナランタイム用の言語としてはいま一つという感じです。問題を理解する上で、weave worksによるブログエントリをご覧ください。Linux Namespaces And Go Don't Mixこの問題などを回避するために、runc(Open Container Initiative Runtime Specificationのデフォルト実装)には、goランタイムが開始する前に実行される、Cで記述されたコードがあります。
https://www.weave.works/blog/linux-namespaces-and-go-don-t-mix
CLI tool for spawning and running containers according to the OCI specificationGoはすばらしい言語ですが、スレッドを厳密に制御し、大量のシステムコールを作成する必要のある小さなシステムユーティリティ向けには、より良い選択肢があります。Rustはcのような低レベルの制御を提供しますが、メモリセーフで、バグや脆弱性のあるクラス全体を回避します。railcarの開発に関する詳細情報は、以下のエントリをご覧ください。
https://github.com/opencontainers/runc
Building a Container Runtime in Rust
https://blogs.oracle.com/developers/building-a-container-runtime-in-rust