検索
特集

クラウドネイティブをけん引してきた「Docker」10周年 前佛氏が「コンテナの価値を実感するのにちょうど良いタイミング」と断言する理由「Dockerは枯れた技術になりつつある」

多くの企業でITインフラやシステム開発の在り方を見直す機運が高まりつつある。急速に変化するビジネス環境に対応するためには「クラウドネイティブ」の取り組みも欠かせない。さくらインターネットの前佛雅人氏は、2023年に10周年を迎えたDockerの歩みを振り返りながら、コンテナ技術が重要な理由や、開発や運用においてDockerコンテナを利用する際のポイントを解説した。

Share
Tweet
LINE
Hatena

 多くの企業でITインフラだけでなく、システムそのものの開発、改善、運用体制をモダナイズしていこうという機運が高まっている。急速に変化するビジネス環境に対応し、ITがより多くの価値を創出する環境として「クラウドネイティブ」にも注目が集まっている。だが、キーワードそのものが一人歩きし、本来の「クラウドネイティブ」の意義と目的を見失いつつある組織もあるのではないだろうか。

 2023年9月に@ITが開催した「Cloud Native Week 2023秋」の基調講演で、さくらインターネットのES本部ES部人材支援グループでテクニカルコミュニケーターを務める前佛雅人氏が、10年の「Docker」の歩みを振り返りながら、コンテナ技術が重要な理由や、開発や運用においてDockerコンテナを利用する際のポイントを解説した。

クラウドネイティブをけん引してきた「Docker」の10年

さくらインターネット ES本部 ES部 人材支援グループ テクニカルコミュニケーター 前佛雅人氏
さくらインターネット ES本部 ES部 人材支援グループ テクニカルコミュニケーター 前佛雅人氏

 データセンターでの物理サーバの運用保守に従事したキャリアを生かし、その後、クラウド技術に関連したオープンソース活動などに携わってきた前佛氏。近年では、その技術的なバックグラウンドを生かし、社内外の教育や人事部門の業務に携わっている。また2023年から日本人初の「Docker Captain」(アンバサダー)としての活動にも取り組んでいる。

 現在、業界で広く使われているDockerは、周辺技術とともに「クラウドネイティブ」と呼ばれる領域の形成に大きく貢献してきたという。Dockerにとって、2023年は公開から10周年のアニバーサリーイヤーに当たる。前佛氏は、Dockerのニーズが生まれた背景となる「クラウドコンピューティング」をあらためて説明した。

 クラウドコンピューティングの概念が、日本で広く認知された契機として、前佛氏は、2008年に発表されたニコラス・カー氏の著書『クラウド化する世界(原題:THE BIG SWITCH)』を挙げた。同書によって、現在の「クラウド」と呼ばれるコンピューティングリソースの利用形態が、業界の統一概念として初めて共有されたと指摘する。

 クラウドの登場により、ITの世界に起こった最大の変化は、ITリソースの「所有」から「利用」への転換だ。従来、企業は自社でITシステムを構築する場合、ネットワークやサーバ、ストレージといったハードウェア、OSやデータベース、ミドルウェアといったソフトウェアを購入し、その上にアプリケーションを構築してきた。クラウドでは、こうした一連のITリソースをサービスとして「利用」する。

 「スイッチを入れれば、即座に使いたいコンピューティングリソースが手に入り、使った分だけの料金が発生します。水や電気と同じようにコンピューティングリソースを扱えるようにするサービスが『クラウド』であるという認識が、同書で共有されました」(前佛氏)

 その後、2011年にはNIST(米国立標準技術研究所)のドキュメントとして「クラウドコンピューティングの定義」が発表された(SP 800-145, The NIST Definition of Cloud Computing)。

 SP 800-145では「クラウドコンピューティング」を「設定可能な計算資源の共有プール」であり「迅速に利用、再利用できる」ものだと定義している。特に、ユーザーが使いたいタイミングで「迅速に利用、再利用できる」という要件は、一般的な「仮想化」と「クラウド」を区別する上で重要な要素となる。併せて「SaaS」「PaaS」「IaaS」といったクラウドのサービスモデルの定義も明確に示されている。

NISTによるクラウドの定義(前佛氏の講演資料より、以下同)
NISTによるクラウドの定義(前佛氏の講演資料より、以下同)

 「クラウドにとって不可欠な要件は『柔軟性』と『スケーラビリティ』です。NISTによって、こう定義されたことが、IT業界的にも大きな出来事でした」(前佛氏)

 日本は2011年に東日本大震災に見舞われる。大規模災害下においても、システムやデータを維持し、ビジネスやサービスを迅速に復旧する「事業継続性」「ディザスタリカバリー」といった取り組みが注目され、そうした観点からも、クラウドコンピューティングの存在感は大きく増すことになった。

クラウドネイティブは「スケールアウトによるデプロイのパターン」

 前佛氏は「『クラウド(コンピューティング)』という概念と『クラウドネイティブ(コンピューティング)』との間にはちょっとした文脈の違いがあり、ニアリーイコールの関係にあります」と指摘した。

 後にクラウドネイティブと呼ばれる初期の概念が生まれたのは2013年だ。世界規模のコンテンツ配信プラットフォームを運営する「Netflix」において、当時のIaaSやPaaSだけでは実現が難しかった「アプリケーション」のスケール手段を模索する中で生まれた、開発およびデプロイの「パターン」が、その原点と考えられるという。

クラウドネイティブの初期概念
クラウドネイティブの初期概念

 「このパターンの考え方を端的に表すものとして『ペットvs.家畜』というフレーズがあります。『仮想サーバ』を個々の動物になぞらえており、『ペット』は1つのサーバを大切に扱う『スケールアップ』を、『家畜』は1つのサーバをあまり重要視せず、必要に応じて増やしたり、処分したりする『スケールアウト』を象徴しています。IaaSやPaaSのようなクラウドでは、スケールアップとスケールアウトの両方が可能ですが、クラウドネイティブは、特にスケールアウトのアプローチによるアプリケーションの展開パターンといえます」(前佛氏)

「ペットvs.家畜」
「ペットvs.家畜」

PyConのライトニングトークで初披露された「Docker」

 クラウドネイティブの重要な構成要素であるコンテナ技術を扱うプロダクトとしてDockerが初めて一般に披露されたのは、Netfilxの発表と同時期の2013年3月に米国で開催された、Pythonの国際カンファレンス「PyCon」におけるライトニングトーク(LT)だった。「The future of Linux containers」と題された5分ほどのLTは、現在もYouTubeで見ることができる。

 「Dockerは、画期的な新製品として発表されたわけではありません。当時の課題として『手元で開発したアプリケーションをクラウドへデプロイすることが難しい』という状況があり、Dockerは、シンプルなコマンドで、アプリケーションとデプロイに必要な情報をイメージ化し、中身を気にせず『迅速かつ自動的に』輸送、移動できるようにすることで、その課題を解決しようとしたのです」(前佛氏)

Dockerが解決したかった課題
Dockerが解決したかった課題

 Dockerコンテナと、その周囲を支える多様な技術要素、概念で形成されてきた「クラウドネイティブ」な環境は、ITの世界に「サービス(アプリケーション)もインフラも、変化し続ける」時代の到来を促した。

サービスとなるアプリケーションもインフラも変わり続ける時代に
サービスとなるアプリケーションもインフラも変わり続ける時代に

 「クラウドネイティブは、特にビジネスITの分野において、常にリリースと改善が繰り返される『納品の概念がない領域』を作り出しました。これは、従来の『納品ありき』の考え方では、競争に負けてしまったり、成果を出せなかったりする領域です。従来の領域との良しあしで語られるべきものではなく、適用場所や考え方が違うのです」(前佛氏)

 クラウドネイティブへの注目が高まる中、2015年にはThe Linux Foundationの傘下プロジェクトとして「Cloud Native Computing Foundation」(CNCF)が設立される。CNCFは、コンテナ技術の推進と、ベンダー中立性の確保を目的として活動している。クラウドネイティブ技術におけるレファレンスアーキテクチャの整理や、コミュニティーの活性化、市場開拓も重要な活動の一部だ。

 CNCFは、企業が「クラウドネイティブ」への取り組みを進める上で参考になる「道しるべ」として、「Cloud Native Trail Map」を公開している。

 Cloud Native Trail Mapでは、「守るべき手順」の最初の3ステップとして「アプリケーションのコンテナ化」「CI/CD(継続的インテグレーション/継続的デリバリー)」「オーケストレーションとアプリケーション定義」が示されている。

 「分散環境上で素早くアプリケーションを展開できる環境を構築したいなら、Trail Mapに示されている1から3の手順を、必ず順番に進めることが不可欠です。4番目以降は、組織の状況やニーズ次第で必要に応じて取り組むとよいでしょう。クラウドネイティブな環境を実現していく過程では、システムの柔軟性が高まる一方で、開発、運用のプロセスを変えることが求められます。必要があれば、手法だけにとどまらず、人や組織、あるいは組織文化も変える必要があります」(前佛氏)

現在が「Docker入門の良いタイミング」である理由

 2023年現在、「Docker」という言葉は、文脈によって異なる対象を指して使われている。例を挙げれば、プロダクト名としての「Docker」、Dockerを開発している企業名を指す「Docker, Inc.」(旧dotCloud)、プラットフォームとしての「Docker」プロダクト群、従来のLinux daemonとしての「Docker」(現在の「Docker Engine」)、オーケストレーションとしての「Docker」などが挙げられる。

 「Docker」が指し示すものが広範にわたる理由としては、公開からの10年間で、さまざまな周辺ツールやプロジェクトが登場し、Dockerを取り巻く環境が変化し続けてきたことが挙げられる。特に2017年から2019年前後には、オーケストレーション領域まで手を広げるなど、状況が錯綜(さくそう)したものの、現在では、業界内での議論もある程度整理されてきているという。

Docker周辺ツールとプロジェクトの関係
Docker周辺ツールとプロジェクトの関係

 「2023年現在、Dockerは、デスクトップ向けのGUIベースのコンテナイメージ管理ツールである『Docker Desktop』の提供と、開発者体験に注力しています。Docker Desktopは、一定の条件を満たす小規模企業や個人、教育、学習用途、非営利のオープンソースプロジェクトにおいては無料で使用できます」(前佛氏)

Docker Engineのアーキテクチャ
Docker Engineのアーキテクチャ

 こうした背景を踏まえ、前佛氏は「Dockerコンテナに入門する良い契機です」と述べた。

 「コンテナ化は、クラウドネイティブの第一歩であり、発表から10年を経てDockerは、枯れた技術になりつつあるといえます」(前佛氏)

 Dockerコンテナの学習に先がけて、前佛氏は「Dockerそのものが“プラットフォーム”であることを理解すべき」とする。Dockerの基本的なアーキテクチャは、コマンドの受け付けや処理、全体を管理する「Docker Engine」を核に、Dockerイメージのレジストリである「Docker Hub」、Dockerコマンドの実行環境である「Docker CLI」などから構成される、非常にシンプルなものだ。

Dockerのアーキテクチャ
Dockerのアーキテクチャ

 特に近年において、Dockerコンテナへの入門を後押しするプロダクトとして各OS向けのGUIツール「Docker Desktop」が充実してきていることが挙げられるという。

 「Docker Desktopを利用すると、Dockerコンテナを手元で扱うための環境が容易に整えられます。個別に仮想化環境を準備する必要がなく、各OSに標準で備えられている仮想化技術を利用した環境構築が可能です」(前佛氏)

Dockerを使った開発やデプロイをするには
Dockerを使った開発やデプロイをするには

 また「Dockerイメージ」については、仮想化におけるVM(仮想マシン)イメージのような「単一のファイル」ではなく、抽象的なイメージやレイヤーが積み重なった「概念」として捉えることで、基礎の理解が進むとアドバイスした。

 「Dockerイメージは“概念”で、Dockerコンテナは“特別な状態のプロセス”です。PID(プロセスID)名前空間が隔離された状態で、ホストOS側から見ると単なるプロセスとして扱われますが、コンテナ側からは自分の名前空間外にある他のコンテナは一切見えません。この仕組みからも、通常の仮想化とコンテナは異なる技術であることが分かります」(前佛氏)

仮想化とDockerコンテナにおけるプロセスと共有状態の比較
仮想化とDockerコンテナにおけるプロセスと共有状態の比較

 前佛氏は「Docker利用検討時の注意点」として、「Dockerは、いわゆる仮想化技術とは異なる思想と技術背景に基づいて出てきたプロダクトです。そのため、セキュリティなどの要件によっては、コンテナよりも仮想化技術を選択すべきケースもあります。またコンテナの導入に当たっては、必ず学習や変化が必要です。『クラウドリフト』的なコンテナへの移行はできないため、メリットが見えなければ導入すべきではありません」とした。

 一方で「技術(再)検証や手順の(再)作成」「迅速なデプロイが求められる領域」「バッチ的な処理の効率化」「生成AI(人工知能)実行環境などのPoC(概念実証)」といった用途においてコンテナ化を検討するには良い機会だとした。

 「今からDockerの導入を進めるなら、幾つかの点に留意すべきです。まずは、導入が目的化しないように注意しながら取り組みを進めること。その際には、Docker Desktopのライセンスにも注意しましょう。コンテナとイメージの基礎を押さえるために、従来の仮想サーバの概念から離れ、別物として理解すべきです。コンテナ化の第一歩は、自分でDockerイメージを作れるようになることです。最初は、出来合いのDockerイメージ、Dockerfileのベストプラクティスを参考にしつつ、迷ったら公式ドキュメントを参照しながら理解を深めていってほしい」(前佛氏)

Dockerとは
Dockerとは

 前佛氏は最後に「Dockerは発表から10周年を迎え、周辺環境が整い、扱いやすいツールも充実してきました。今は、導入を検討する良い契機だと思います。クラウドネイティブを目指すのなら、まずはDockerコンテナを体験し、取り扱う技術の選択肢を広げてみることをオススメします」と述べて基調講演を締めくくった。

Copyright © ITmedia, Inc. All Rights Reserved.

[an error occurred while processing this directive]
ページトップに戻る