Docker社は最近、クラウドベースのコンテナ・イメージ・ビルダーであるDocker Build Cloudの一般提供を発表した。Docker Build Cloudは、リモート共有キャッシュとAMD64およびARM64 CPUアーキテクチャ用のネイティブ・ビルダーを提供し、「コラボレーションの改善」とイメージ・ビルド時間の短縮を目標としている。
Dockerは仮想化技術であり、アプリケーションの実行時に疎に分離された環境を提供する。コンテナと呼ばれる各環境は、ホストマシン上で実行する前に構築する必要があり、イメージと呼ばれる不変のファイルコレクションとして配布される。コレクション内の各ファイルはレイヤーと呼ばれ、ファイルシステムに対する変更の圧縮されたセットである。Docker Builderは、Dockerfile内の一連の命令をイメージに変換する役割を担っている。
Dockerfileがどのようにイメージに変換されるか(出典:Dockerユーザーガイド)
2013年にDockerが発表されて以来、コンテナは「一度構築すれば、どこでも実行できる」というビジョンを実現するためのユビキタスな仕組みとなった。この概念は、もともとJava言語のクロスプラットフォームな操作性を強調するためにSun Microsystems社によって広められたものだ。Linuxエコシステムにおけるこの成功の鍵となったのは、オープンソースのマシン・エミュレータおよび仮想化ツールであるQEMUの利用である。これによってユーザーは、例えばARM32v7のような1つのCPUアーキテクチャのホスト上でイメージを構築し、それを他のアーキテクチャ上で実行できるようになったが、エミュレーション・プロセスが比較的遅いため、ペインポイントにもなった。2019年後半、Dockerはこの課題を解決する仕組みとしてRemote Buildersを導入した。
Remote Buildersを使えば、ユーザーは相互トランスポートレイヤセキュリティ(mTLS)またはセキュアシェル(SSH)でアクセス可能なホストマシンを、イメージをビルドするためのノードとして登録できる。異なるターゲット・アーキテクチャのノードを登録し、ビルド段階でそれらを参照することで、ユーザーは1回または複数回同時にビルドし、エミュレーションなしでネイティブ・イメージを実行できるようになった。機能リリース当時の Remote Buildersの主な欠点はユーザーがビルダーノードのフリートをセットアップし、維持する必要があることだった。Docker Build Cloudは、サービスとして提供することで、この運用負担を取り除くことを目的としている。
ローカルのDockerクライアントがRemote Buildersを使用する方法(出典:Docker Remote Buildersブログポスト)
Docker Build Cloudのノードは、専用のEBSボリュームを持つAmazon EC2インスタンスとして稼働する。EC2の仕様は、PersonalとProプランの顧客は8vCPUと16GBのRAMから始まり、TeamとBusinessの顧客は16vCPUと32GB RAMまで上がる。すべてのDockerプランには、組織全体で共有できるビルド分の数に制限があり、Docker Build Cloud Teamはアドオンとして1ユーザーあたり月額5ドルから販売されている。Docker Build Cloudアドオンでは、さらに1ユーザーあたり200ビルド分と、組織全体で共有される200GBのキャッシュが提供される。同等の Remote Builders構成をAWSでセルフホストした場合の大まかなコスト見積もりでは、月々のランニングコストは850ドルであった。これは、Docker Build Cloudが1ユーザーあたり5ドルで、170人未満のエンジニアを抱えるチームにとって有利な価格設定であることを示唆している。
Docker Build Cloudと同等のセルフホスト構成のAWSコスト見積もり(出典:AWS Pricing Estimator)
最後に、Docker Build Cloudは現在AWSのUS Eastリージョンでのみ利用可能であり、利用開始に関する詳細な情報はユーザーガイドに記載されている。