Docker 公式イメージ

Docker 公式イメージ は Docker Hub 上において提供される、厳選された Docker リポジトリです。 これは以下のことを意識して提供されています。

  • 基本的なベース OS となるリポジトリを提供します。 (たとえば ubuntu, centos などのように)数多くのユーザーにとってスタート地点となるものを提供します。

  • 代表的なプログラミング言語環境、データストア、各種サービスといった、PAAS(Platform as a Service)が提供するものにも似た、一時的な実現環境を提供します。

  • Dockerfileのベストプラクティス の例として示し、わかりやすいドキュメントを提供します。 これによって、Dockerfileを作成する際のリファレンスとなるようにします。

  • 適切なタイミングでセキュリティアップデートを適用するようにします。 これは特に重要なことです。 Docker Hub 上における Docker 公式イメージは、人気を得ているものがあるからです。

Docker 社としては、Docker 公式イメージに関わるさまざまな内容に関して、レビューと公開を担当する専門チームを支援しています。 このチームは、ソフトウェア開発元の保守担当、セキュリティ専門家、Docker コミュニティの幅広い方々と共同して作業を進めています。

ソフトウェア開発者が、担当している Docker 公式イメージを保守することが好ましいのは言うまでもありません。 しかしこれを厳密に要求することはしていません。 そもそも Docker 公式イメージを生成して保守していくことは、共同で行われている作業です。 GitHub 上にて公開で行われているため、そこに参加することが大いに推奨されています。 どなたであっても、フィードバック、コード提供、プロセス変更の提案、さらには新たな公式イメージの提案までもが提供できるわけです。

メモ

Docker 公式イメージは Docker の知的財産です。

Docker 公式イメージをいつ利用するのか

Docker を初めて利用するユーザーは、Docker 公式イメージを用いてプロジェクトを構築することをお勧めしています。 このイメージには分かり易いドキュメントがあって、ベストプラクティスを示しています。 そして一般的な利用を前提にして設計されています。 上級者の方はDockerfileを勉強する一環として、Docker 公式イメージを確認していただくことができます。

Docker 公式イメージを取得した後に目指すことは、イメージサイズの最適化です。 たとえばプログラミング言語イメージには、たいていは完全なビルドツールチェーンが含まれていて、最適化コードによるモジュールをインストールできるようにしています。 上級者は独自のイメージをビルドする際には、プリコンパイル済ライブラリを必要な分のみ含めることで、容量を節約することができるかもしれません。

pythonruby のような数多くのプログラミング言語環境向けには-slimというタグをつけています。 これは最適化への要求を満たす目的で作られています。 この「slim」でも不十分に感じる方は、公式イメージ内のベース OS イメージから派生イメージを作り上げて、その後も保守を行っていただくことをお勧めします。 同じやり方を繰り返しても無駄かもしれないからです。

Docker 公式イメージへのフィードバック送信

すべての Docker 公式イメージのページにはドキュメントが含まれていて、そのリポジトリに対する詳細が説明されています。そしてその中にユーザーフィードバックの節があります。 たいていの場合 GitHub リポジトリには、公式リポジトリに対する Dockerfile が含まれており、さらに有効な issue トラッカーも提供されています。 一般的なフィードバックやサポートに関する質問は、Libera.Chat IRC 上の#docker-libraryに対して行ってください。

Docker 公式イメージの生成

高度なレベルで話をすると、公式リポジトリは、GitHub のプルリクエストという形での提案から始まります。 詳細な具体的な提案のあり方については、以下の GitHub リポジトリに示されています。

Docker 公式イメージの担当チームは、コミュニティに貢献する方々からの協力も得ながら、正式に各提案をレビューし、提案者へのフィードバックを行っています。 ただし提案を受け付けてからレビューを開始するまでには、多少もたつくことがあるかもしれません。

レビューを行っていく際には、主観的な議論となることもあります。 そのような主観的な疑問は、「このイメージは汎用的に使えますか?」といった単純な質問に帰着します。 たとえば python の Docker 公式イメージは、幅広い Python 開発コミュニティにとって「汎用的に使えます」と言えます。 ところが「先週作った Python のアドベンチャーゲーム」といったあいまいな文章では、何も答えられません。

新たな提案が受け付けられたら、その提案者はイメージを常に最新状態とし、ユーザーフィードバックに返信する責任があります。 Docker 公式リポジトリチームには、Docker Hub 上にイメージとドキュメントを公開する義務が発生します。 Docker 公式イメージを更新していくことは、レビューを行うことは少ないかもしれませんが、プルリクエストの作業に似ています。 Docker 公式イメージチームは、あらゆる活動を最大限管理し、品質リスクやセキュリティ問題の発生を抑えます。

Docker, docker, registry, accounts, plans, Dockerfile, Docker Hub, docs, official, image, documentation