Docker 公式イメージは、 Docker Hub でホストされている Docker リポジトリをまとめたセットであり、一般的な言語ランタイムとフレームワーク、クラウドファースト ユーティリティ、データストア、Linux ディストリビューション用に事前に設定されたさまざまな種類のイメージを提供します。 これらのイメージは、セキュリティ、ユーザビリティ、およびバージョン管理のベスト プラクティスを満たすよう、メンテナンスおよび精査されているため、さまざまな環境で一貫してアプリケーションをデプロイおよび実行しやすくします。
Docker 公式イメージは、ソフトウェア サプライ チェーンとオープンソース ソフトウェアの両方のセキュリティに対する Docker の取り組みの重要な要素です。Docker 公式イメージには、直接使用したり、独自のイメージをビルドする際のベース イメージとして使用したりできる何千ものイメージが用意されています。 たとえば、Alpine Linux、NGINX、Ubuntu、PostgreSQL、Python、Node.js 用の Docker 公式イメージがあります。Docker Hub にアクセスして、現在利用可能な Docker 公式イメージを探してみてください。
このブログ記事では、 Docker 公式イメージに関するよくある 3 つの誤解を取り上げ、ソフトウェア サプライ チェーンの保護に役立つ 7 つの方法について概説します。
Docker 公式イメージに関するよくある 3 つの誤解
Docker 公式イメージは 10 年以上前から存在し、何十億回も使用されてきましたが、その一方で誤解されていることもあります。Docker の公式イメージを「所有」しているのは誰か、これらすべてのタグには何があるか、Docker 公式イメージをどのように使用する必要があるかなど、よくある誤解についていくつか取り上げてみましょう。
誤解 1: Docker の公式イメージは Docker によってコントロールされている
Docker 公式イメージは、アップストリームのメンテナー、コミュニティのボランティア、Docker エンジニアのパートナーシップによってメンテナンスされています。外部の開発者が Docker 公式イメージの大部分を Dockerfile で管理し、Docker エンジニアが洞察とレビューを提供して、Docker 公式イメージ カタログ全体でベストプラクティスと統一性を確保します。さらに、Docker は Docker 公式イメージのビルド インフラストラクチャとロジックを提供およびメンテナンスし、Docker 公式イメージが 10 以上のアーキテクチャ/オペレーティング システムの組み合わせをサポートする一貫性のある安全なビルド環境を保証します。
誤解 2: Docker 公式イメージは単一のユース ケース向けに設計されている
ほとんどの Docker 公式イメージ リポジトリは、いくつかのイメージ バリアントを提供し、サポートされている複数のバージョンを維持しています。 言い換えれば、Docker 公式イメージの latest
タグは、ユース ケースにとって適切な選択ではない可能性があります。
Docker 公式イメージのタグ
各 Docker 公式イメージ リポジトリのドキュメントには、「Supported tags and respective Dockerfile links」セクションがあり、現在のすべてのタグと、それらのタグを使用してイメージを作成した Dockerfile へのリンクが一覧表示されています (図 1)。 このセクションは、初めて利用するユーザーにとっては少し気が引けるかもしれませんが、いくつかの規則を念頭に置いておくことで、初心者でも、利用可能なイメージ バリアントと、さらに重要なことである、どのバリアントがユース ケースに最も適しているかを理解できます。
- 同じ行にリストされているタグはすべて、同じ基になるイメージを参照しています。 (複数のタグで同じイメージを指定することができます。 たとえば、図 1 は
20.04、focal-20240216、focal
タグはすべて同じイメージを参照するubuntu
の Docker 公式イメージ リポジトリを示しています。 - 多くの場合、Docker 公式イメージ リポジトリの
latest
タグは、使いやすさを重視して最適化されており、Docker 公式イメージにパッケージされているメイン ソフトウェアを使用する際に役立ちますが、厳密には必要ではないさまざまなソフトウェアが含まれています。 たとえば、latest
イメージには、よく Git やビルド ツールなどのツールが含まれています。その使いやすさと、適用範囲の広さにより、入門ガイドでよくlatest
イメージが使用されます。 - 一部のオペレーティング システムおよび言語ランタイム リポジトリは、インストールされているパッケージが少ないため、サイズが小さい 「Slim」 バリアントを提供します。たとえば、
python:3.12.2-bookworm
イメージは Python ランタイムだけでなく、Python アプリケーションをビルドしてパッケージ化するために必要なツール (570 個以上のパッケージ) も含まれています。これを約 150 個のパッケージを含むpython:3.12.2-slim-bookworm
と比較してください。 - 多くの Docker 公式イメージ リポジトリは、Debian や Ubuntu ではなく、Alpine Linuxディストリビューション上にビルドされた「Alpine」バリアントを提供しています。Alpine Linux は、コンテナー イメージの小さく、シンプルで、安全なベースを提供することに重点を置いており、Docker 公式イメージの Alpine バリアントは、通常、必要なパッケージのみをインストールすることを目的としています。その結果、Docker 公式イメージ の alpine バリアントは、通常、「slim」バリアントよりもさらに小さくなります。たとえば、linux/amd64 の
node:latest
イメージは 382 MB、node:slim
イメージは 70 MB、node:alpine
イメージは 47 MB となっています。 - トイ ストーリーのキャラクターに似た単語 (例: bookworm、bullseye、trixie など) や形容詞 (jammy、focal、bionic など) を含むタグが表示されている場合、それらはベース イメージとして使用する Linux ディストリビューションのコードネームを示しています。Debian のリリース コードネームはトイ ストーリーのキャラクターに基づいており、Ubuntu リリース は形容詞+動物名の呼称 (例: ゴールデン レトリバー) を使用しています。Linux ディストリビューション インジケーターは、多くの Docker 公式イメージが、基盤となる複数のディストリビューション バージョン (たとえば
postgres:bullseye
、postgres:bookworm
) に基づいてビルドされたバリアントを提供しているため、役立ちます。 - タグには、イメージ バリアントの目的に関するその他のヒントが含まれている場合があります。多くの場合、これらは Docker 公式イメージ リポジトリのドキュメントで後で説明されています。「このイメージの使用方法」または「イメージのバリエーション」セクションを確認してください。
誤解 3 : Docker 公式イメージはソフトウェア開発のベスト プラクティスに沿っていない
批評家の中は、Docker の公式イメージは、コンテナー プロセスをルートとして実行しないなど、ベスト プラクティスに反していると主張する人もいます。ユーザーがいくつかの独自の標準を採用することを推奨しているのは事実ですが、ユース ケースが異なれば必要なアプローチも異なることも認識しています。たとえば、一部のユース ケースでは、ワークロードに対して昇格された特権が必要な場合があり、それを安全に行うためのオプションを提供しています。
Docker 公式イメージがソフトウェア サプライ チェーンの保護に役立つ 7 つの方法
Docker は、セキュリティが継続的なプロセスであることを認識しており、ユーザーに可能な限り最高のエクスペリエンスを提供することを約束します。2013 年の創業以来、Docker はソフトウェア サプライ チェーンのリーダーであり、オープンソース セキュリティを含むセキュリティへの取り組みは、開発者を新たな脅威から守るサポートをしてきました。
オープンソース ソフトウェアが利用できるようになったことで、強力なアプリケーションやサービスを効率的にビルドすることがこれまで以上に簡単になりました。オープンソースの透明性により、作成したソフトウェアのセキュリティ体制について、これまでにない洞察を得ることができます。しかし、オープンソース ソフトウェアの力と透明性を活用するには、ソフトウェア サプライ チェーンのセキュリティを全面的に採用することが不可欠です。Docker 公式イメージは、開発者がより安全なソフトウェア サプライ チェーンをビルドするのに役立ついくつかの方法は次のとおりです。
- ビルド プロセスを開く
可視性はソフトウェア サプライ チェーンの重要な側面であるため、Docker 公式イメージを透過的でオープンなビルド プロセスから作成しています。Dockerfile のインプットとビルド スクリプトはすべてオープンソースであり、すべての Docker 公式イメージのアップデートはパブリック プル リクエスト プロセスを通り、すべての Docker 公式イメージ ビルドのログを検査することができます(Jenkins / GitHub Actions)。
- 最小特権の原則
Docker 公式イメージのビルド システムは、各アーキテクチャの書き込みをアーキテクチャ固有のビルド エージェントに制限するなど、最小特権の原則 (POLP) に厳密に準拠しています。
- ビルド システムのアップデート
Docker 公式イメージのビルドとイメージのセキュリティを確保することは最も重要です。 Docker 公式イメージのビルド システムは、自動ビルド、定期的なセキュリティ監査、アップストリーム プロジェクトとのコラボレーション、継続的なテスト、およびセキュリティ パッチを通じて最新の状態に保たれています。
- 脆弱性レポートと継続的な監視
Docker Scout により、脆弱性に関する洞察はすべての Docker 公式イメージで利用でき、新しい脆弱性が発見されると継続的にアップデートされます。Docker は、セキュリティ上の問題がないかイメージを継続的に監視し、迅速に対処することをお約束します。例えば、Docker は先日発生した xz サプライ チェーン攻撃 (CVE-2024-3094) に対して、合理的なガイダンスと修復策をいち早く提供しました。また、Docker Scout の洞察と修復ガイダンスを使用して、20 以上の CVE データベースからの CVE の結果を 20 分から 60 分ごとに更新することで、実用的な洞察をほぼリアルタイムで表示します。
- ソフトウェア部品表 (SBOM) と provenance attestations
Docker は、すべての Docker 公式イメージの署名付き構成証明として、完全で正確な SBOM と詳細なビルドの出所を証明する provenance attestations を提供します。これにより、ユーザーは Docker 公式イメージの出所に保証し、潜在的な脆弱性を簡単に特定して軽減することができます。
- 署名の検証
現在、署名検証をイメージのプルおよびビルド プロセスに統合することに取り組んでいます。これにより、すべての Docker 公式イメージが使用前に検証され、ユーザーに追加のセキュリティ レイヤーを提供します。
- アップデート頻度の増加
Docker 公式イメージは、必要なソフトウェアの最新バージョンかつ、Linux ディストリビューションの安定したバージョンに基づいてビルドされたという両方の長所を提供します。 これにより、Linux ディストリビューションからの新しいパッケージを待ったり、Linux ディストリビューションの不安定なバージョンの使用を余儀なくされたりすることなく、実行しているソフトウェアの最新機能と修正を使用できます。さらに、Docker 公式イメージのビルド インフラストラクチャのスループットを向上させ、より広範囲の Docker 公式イメージのより頻繁なアップデートをサポートしています。この取り組みの一環として、GitHub Actions と Docker Build Cloud でビルドを試験的に実施しています。
まとめ
セキュリティとオープンソース ソフトウェアの保護における Docker のリーダーシップは、Docker 公式イメージや、その他の信頼できるコンテンツを通じて確立されています。Docker は、ベスト プラクティス、ツール、コミュニティ エンゲージメントに重点を置いたセキュリティへの包括的なアプローチを取り、アップストリーム プロジェクトや SIG と協力して、セキュリティの問題に迅速かつ積極的に対処しています。
Docker 公式イメージは、開発者がアプリケーションをビルド、出荷、テスト、および実行するための柔軟で安全な方法を提供します。Docker 公式イメージは、Docker 公式イメージ コミュニティ、アップストリーム メンテナー/ボランティア、Docker エンジニアのパートナーシップを通じてメンテナンスされており、Docker 公式イメージ カタログ全体でベスト プラクティスと統一性を確保しています。各 Docker 公式イメージには、さまざまなユース ケースに対応する多数のイメージ バリアントが用意されており、各バリアントの目的を示すタグが付いています。
アプリケーションが安全で透過的な基盤の上にビルドされていることを知っていれば、Docker ツールと製品を使用して自信を持ってビルドできるようになるでしょう。
本ブログ記事で紹介している Docker Scout に関するご質問や、デモのご要望はエクセルソフトまでお問い合わせください!
エクセルソフトは Docker の Preferred Reseller として、Docker Business を販売しています。2022 年 1 月 31 日以降、中・大規模組織による Docker Desktop の利用には有料サブスクリプションが必要となっています。詳細は、弊社 Web サイトをご確認ください。
*本記事は、Docker 社が提供している以下の記事から抜粋・転載したものです。