[和訳] Docker Registry APIがOCIで標準化の見込み #docker
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
本稿は Docker Registry API to be standardized in OCI (2018/04/10) の和訳です。
Linux Foundationが設立し、コンテナ化産業を活性化するための業界標準を定めているOpen Container Initiative (OCI) が、Docker Registry HTTP API V2の仕様を採用することを決定しました。Docker社は、我々の技術の積み重ねがデファクトスタンダードになることを誇りに感じています。イメージフォーマットの仕様を確定することで、OCIコミュニティの一部としてコンテナエコシステムに正式に共有・協力できることを喜ばしく思います。我々の配布プロトコルは、市場のすべてのコンテナレジストリの基盤となっています。また世界中にコンテナコンテンツを配布するために、隔週計算で10億回位以上利用されるほどに堅牢です。
配布プロトコルとは?
このプロトコルを大局的に捉えた時にDockerの核となる部分は、イメージのプッシュ・プル機能です。最初の“Hello, World”の瞬間から、この概念がすべてのユーザにもたらされ、Dockerのユーザエクスペリエンスの大半を占めています。我々は肘掛け椅子に深く座り、この魔法のような出来事を感嘆をもって眺めている間に、シンプルな機能に集約するために設計と熟考に膨大な時間がかかっているという事実をつい見落としてしまいがちです。
Dockerを初めてリリースしたとき、開発チームがあるプロトコルと イメージレジストリ の実装を素早く組み合わせた瞬間に、その魔法は本当の意味で始まったのです。 イメージレジストリ は、複数のマシン上にイメージを保存するための共通のサービスを提供します。これは1つのマシン上で1つのイメージを構築したのち、別のマシンで当該イメージをプルして実行するものです。これでユーザは完全なソフトウェアの配布物を取得し、指先1つで簡単に実行できるようになりました。Docker Hubを実現したこの実装は、最終的に https://github.com/docker/docker-registry としてオープンソースとなりました。このプロトコルと、背景となった実装が、のちに知られるようになったV1プロトコルになりました。そして多くのイメージがプッシュおよびプルされ、開発者たちの役に立ちました。
進化
イメージのプッシュおよびプルは時代を越えて続きましたが、ユーザがDockerを他のレジストリと共に使用し始めるにしたがって、V1プロトコルの問題点が浮かび上がりました。問題点の中心は、複数のレジストリにわたって共有される識別子の概念に関するものと、Dockerの実装との強固な結び付きによるものでした。単一の Docker Engine が2つの異なるレジストリからイメージを取得した場合、どのイメージがどの識別子を持つかについて矛盾が生じるという問題でした。複数のレジストリを利用することでユーザが問題に直面することがないよう何らかの手を打つ必要がありました。
2014年の暮れにDocker社は、初期のAPI構造の 提案 において、これらの問題への取り組みを開始しました。この設計の鍵となったのは、レジストリがイメージに対して共通の識別子を持つことを可能とする コンテントアドレッサブル イメージで、Docker Engineからのイメージフォーマットの内部的な詳細情報の切り離しも可能としました。さらにそれは、自身で展開することも可能としました。コミュニティが協力し、仕様と実装に関するこの提案に対して140ものコメントを生み出しました。この努力の結果が、2015年春にリリースした Docker 1.6 によってGAサポートとしたDocker Registry 2.0です。以来Dockerコミュニティは、ユーザの進化するニーズに応えるように発展してまいりました。
さらなる前進
Dockerの広まりによってこのプロトコルも業界で広く採用され、多種多様な環境において実践的にテストされてきました。このプロトコルは署名や検証などの補完的な技術との相性が良いため、Docker EEにも備わっています。OCIへの この仕様の寄贈 によって、コンテナ技術の重要な一面を担うこのプロトコルは、正式にOCIの標準となることでしょう。同じようにして Open Container Initiative (OCI) はこれまで、コンテナランタイムとして活用されている ランタイム仕様 および イメージ仕様 を発表してきました。この 配布仕様 の提案の受け入れによって、コンテナ活用の重要な側面を担ってきたこのプロトコルは、OCIの一部として花開くことでしょう。