[和訳] 2017年Dockerブログ記事トップ5: DockerプラットフォームとMobyプロジェクトにKubernetesを追加 #docker #kubernetes #k8s
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
本稿は Top 5 Blogs of 2017: Docker Platform and Moby Project add Kubernetes (2017/12/29) の和訳です。
2017年にもっともよく読まれたDockerブログ記事、トップ5の中からご紹介します。今回は、DockerConヨーロッパで告知した、DockerプラットフォームにおけるKubernetesサポートについて振り返ってみたいと思います。この記事では、業界をけん引するコンテナプラットフォームであるDocker Enterprise EditionとKubernetesの統合について掘り下げています。
DockerプラットフォームにKubernetesサポートを統合することによって、コンテナワークロードのオーケストレータとして、KubernetesとSwarmの両方が選択可能となります。Kubernetesの統合に関しましては、 Dockerベータ版にご登録いただく とともに、次のブログ記事で詳細をご確認いただけます:
- Docker Enterprise EditionがKubernetesをサポート (和訳)
- Docker Community Edition on the desktop with Docker for Mac and Windows
- The Moby Project
Dockerは、アプリとインフラの間に位置するプラットフォームです。Dockerにおけるアプリ構築は、開発チームとIT運用チームの両者に自由と柔軟性をもたらします。なぜならDockerは、企業がアプリケーションをデプロイするすべての場所、つまり (IBMメインフレームや、企業向けLinuxとWindowsを含む) オンプレミス環境内と、クラウド上のいたるところで実行可能だからです。Dockerにおいては、いったんアプリケーションをコンテナ化すれば、再構築・再デプロイ・移動などを簡単に行えます。さらにオンプレミスとクラウドなど別のインフラにまたがる設定での実行も可能です。
Dockerプラットフォームは多数のコンポーネントを次の4つのレイヤーに集約し構成しています:
- containerd: OCI (Open Container Initiative) に準拠した業界標準のコンテナランタイム。
- Swarmオーケストレーション: ノード群を分散システムに変換。
- Docker Community Edition (Docker CE): コンテナアプリの構築から出荷までのシンプルなワークフローを開発者に提供。ワークフローには、アプリケーション構成やイメージの構築と管理などの機能を含む。
- Docker Enterprise Edition (Docker EE): エンド・トゥ・エンドの安全なソフトウェアサプライチェーンと、本番環境におけるコンテナ運用の管理を提供。
これらの4つのレイヤーは、オープンソースであるMobyプロジェクトを上流とするコンポーネントで構成されています。
Dockerの設計理念は、常に選択肢と柔軟性をユーザに提供することです。ユーザが既に利用している各ITシステムにDockerを統合できる点は重要です。そのためDockerは、すでにデプロイ済みのネットワーク・ロギング・ストレージ・ロードバランサおよびCI/CDシステムにうまく連携するように作られています。このためDockerは業界標準プロトコル、または文書化および公開されているインターフェイスに準拠しています。そしてDocker EEの初期設定はよく考えられた優れたものです。さらに、すでに運用しているシステムをお持ちのユーザや、その他のソリューションをお望みの方には、Docker社認定のサードパーティのものへの置き換えも可能です。
2016年、DockerはプラットフォームにSwarmKitプロジェクトを装備した オーケストレーションを加えました。そして2017年にはSwarmについて、“設定が簡単で拡張性があり、安全でありながらすぐに使える”といった高評価を得ました。
その一方で、“エンド・トゥ・エンドのコンテナ管理機能をもつDockerプラットフォームはとても使いやすいが、コンテナのスケジューリング管理にはKubernetesのようなSwarm以外のオーケストレータを使いたい”というユーザの声もありました。理由は、それらのユーザがKubernetesで実行するサービスをすでに構築している、あるいは求めている特定の機能をKubernetesが備えているからでした。このような経緯で私たちはDocker EEと、Docker for MacおよびWindowsの両者において、オーケストレーションの選択肢として (Swarmと共に運用できる) Kubernetesサポートを追加しました。
さらに、KubernetesオーケストレーションをネイティブとしたDockerアプリをより簡単にデプロイできるようにするための革新的なコンポーネントにも取り組んでいます。Kubernetesを統合したDockerの最新版では、例えば カスタムリソース などKubernetesの拡張機構やAPIサーバアグリゲーション層を使用するなどして、Docker ComposeアプリをKubernetesネイティブのPodやサービスとしてデプロイすることが可能となります。
また次にリリースするDockerプラットフォームの最新版では、直接Kubernetes上で実行する本番環境用のアプリを、開発者が自身のワークステーションで構築およびテストすることが可能となります。そして運用チームは、Docker EEのすべての利点を享受します。つまり、KubernetesまたはSwarmでオーケストレーションしている本番環境でアプリを実行しながら、安全なマルチテナントやイメージのセキュリティスキャン、そしてロールベースアクセス制御が可能になるのです。
現在、私たちがDockerへの統合に取り組んでいるKubernetesのバージョンは、CNCF (Cloud Native Computing Foundation) のもので、皆さまにもおなじみの生のままのKubernetesです。フォークや旧式のバージョン、ラッパー、あるいは機能が限定されたものではなく正規のバージョンとなります。
Mobyプロジェクトを通して、Docker社は2016年よりKubernetes の統合と、Kubernetesへの貢献に尽力してまいりました。Kubernetesインストールの作成および管理をするInfraKit上では、コンテナランタイムのための containerd (現在のバージョンは1.0) とcri-containerdに取り組むとともに、オーバレイやネットワーク機能のためのlibnetworkにも取り組んできました。 Mobyプロジェクトのブログ記事 では、より多くの事例と詳細を紹介しています。
DockerとKubernetesは、その系統の多くに共通点があります。同じプログラミング言語で書かれており、共通のコンポーネントを有しています。また同じ人々が同じ理念を共有し貢献してきました。Docker社は、製品およびオープンソースにおけるDockerの両方においてKubernetesサポートを開始できることを喜ばしく思っています。そして、Kubernetesコミュニティと協働し、コンテナとコンテナオーケストレーションをよりパワフルに、しかも簡単に使えるようにできることを楽しみにしています。
私たちは、オーケストレーションの選択肢としてKubernetesを加える一方で、大規模な本番環境において重要なアプリケーションの実行のためにSwarmを利用しているユーザの皆さまへのサポートも継続することをお約束します。DockerのKubernetes統合についてもっとお知りになりたい方は、 DockerCon ヨーロッパ におけるセッションの中から、“What’s New in Docker(Dockerの新しい機能)” と “Gordon’s Secret Session(ゴードンの秘密のセッション)”をご覧ください。
この記事についてもっと掘り下げたい方は: