話題のDockerの魅力とは? OSSインフラナイター vol.1 レポート

2017年7月14日(金)
小林 和正

6月15日、サイオステクノロジー株式会社のセミナールームにて「Docker 最前線!OSSエキスパート鼎談シリーズ: 攻めるITはこう実現する! OSSインフラナイター vol.1」が開催された。

ネットスケープ創業者 マーク・アンドリーセン氏が「すべての企業がソフトウェア会社になる」と予言したように、近年ではソフトウェアの活用による事業改善など様々な取り組みが見受けられる。2017年、ソフトウェアにおいてホットなトピックのひとつと言えばコンテナ技術だろう。

本イベントでは今もっとも人気のコンテナ技術「Docker」と、マイクロサービスなどで使われている「nginx」からみたコンテナ技術の講演があったのでレポートしていく。最後にOSSのエキスパート3名がエンタープライズITを語る鼎談の様子をお届けしよう。

巷で話題のDockerを知る ~ 先進企業は、なぜDockerを使って攻めるのか? ~

日本ヒューレット・パッカード株式会社 オープンソース・Linuxテクノロジーエバンジェリスト 古賀 政純氏

最初に登壇した日本ヒューレット・パッカード株式会社 オープンソース・Linuxテクノロジーエバンジェリストの古賀 政純氏は、Dockerが注目を集めている背景と革新性を語った。近年はビジネスの変化に瞬時に対応するためにマイクロサービス化が進んでいる。マイクロサービスとは小さなアプリケーションを組み合わせて構成されたシステムで、この小さなアプリケーションが動作するのがコンテナだ。

コンテナについて簡単にざっくりと説明すると、OS環境に近いが異なるものの上で目的のプロセスのみが動作する。仮想化環境との違いでメリットとしては、OSのインストールが不要なため環境構築を高速化できる、Hypervisorを介さないためオーバーヘッドが小さい、必要最小限のプロセスだけ動くのでOS上で実行するよりも安全性が高いことが挙げられる。

欧米企業によく見られるOSとアプリケーションの構築作業を極力やらない戦略

次に、構築手順書に基づいてOSとアプリケーションを構築する作業を省くという発想からDockerを紐解いてみよう。ここで活躍するのがDocker Hub(コンテナ共有サービス)から入手できるDockerイメージだ。これはコンテナの実行に必要なファイルシステムで、構築作業不要でコンテナを起動できる。このコンテナ上で開発してイメージの更新を繰り返していくのがコンテナシステムの典型的な利用方法だ。

DockerイメージをTARアーカイブにしてコピーすれば簡単に移動可能で、環境構築の手順をコード化したDockerfileは一連の流れを自動化できる。さらにDockerコンテナは、コピー元とコピー先で同じように動作する仕組みになっている。すなわち、実行環境やライブラリのバージョン、環境変数の違いで動かないことはない。このように可搬性と冪等性を確保できるのがDockerの魅力であり、環境構築や開発の高速化に寄与しているのだ。

Dockerを採用したレッド・ブラック・デプロイメントの概要図

Dockerの活用例として紹介されたのが、本番環境に手を加えないイミュータブル・インフラストラクチャという考え方と、負荷分散装置やルータで本番と開発環境を一度に切り替えるレッド・ブラック・デプロイメントと呼ばれる手法だ。セキュリティーホールを塞ぐパッチの適用や新しいサービスをすぐに提供する際など、アプリケーションの更新作業が頻繁に発生する環境においてはスピーディに対応できる、Dockerを採用したレッド・ブラック・デプロイメントが効果的だろう。

マイクロサービスで使われるnginxとコンテナ技術

サイオステクノロジー株式会社 OSS事業企画部 アクティングマネージャー 村田 龍洋氏

続いて、サイオステクノロジー株式会社 OSS事業企画部 アクティングマネージャーの村田 龍洋氏が登壇した。nginxと聞くとWebサーバを連想しがちだが、実はそれ以外でも幅広く使われており、Webアプリケーションを加速させるツールだと言う。

nginxの特徴およびApacheとの違い

まず、nginxの特徴は高速・軽量・高機能の3つ。Apacheと比較しながら高速かつ軽量な理由を探ってみよう。大きな違いはプロセスの立て方だ。プロセスベースのApacheは1プロセス1クライアントで同期処理を行うが、イベントベースのnginxは1プロセスで10,000クライアント以上を非同期処理できる。

このように、nginxではCPUの処理能力が重要だが、仮想化環境を利用するとハードウェアをエミュレーションするため、オーバーヘッドがかかってしまう。Dockerを使うとハードウェアのエミュレーションが不要になるので高速に処理できる。よって、Dockerとnginxは相性が良いと言える。

nginxはWebサーバ以外にどのように使えるのだろうか。いくつか具体例を挙げてみよう。フロントに置いてリバースプロキシとして使えば分散型のアプローチが可能だ。アプリケーションゲートウェイや動画の配信プラットフォームとして利用することもできる。これが特徴のひとつ、高機能に相当する部分だ。

レガシーアプローチとモダンアプローチの違い

続いてマイクロサービスに関する話題に移る。マイクロサービスは小さなアプリケーションをAPIで疎結合したものだ。モダンな分散型Webアーキテクチャ(マイクロサービスアーキテクチャ)には様々な利点がある。小さなアプリケーションを素早く開発してサービスの展開速度を向上できる。もし障害が発生したとしても対象のサービス以外は利用できるので、耐障害性に優れる。パフォーマンスを改善する時はボトルネックになっているサービスのみ変更できるなど拡張性も高い。

以上のようにコンテナ技術とマイクロサービスアーキテクチャの組み合わせは、開発者の生産性と事業のスピードを重視したシステムに最適だ。一方で基幹に使われるような安定性と信頼性を重視したシステムには不向きと言える。全てに共通して言えることだが、万能なものはない。用途に合わせて選択する必要があるだろう。

OSSエキスパート鼎談シリーズ: ここだけでしか聞けないDockerの内緒の話

鼎談者は左からサイオステクノロジー株式会社 面 和毅氏、村田 龍洋氏、日本ヒューレット・パッカード株式会社 古賀 政純氏

OSSエキスパートが今回のテーマであるDockerについて語り合った。ほとんどがDockerを導入する時に考えておくべきことや今後の課題だった。全て取り上げると長くなるので、筆者がピックアップした中から要点だけ簡潔にまとめて列挙していく。特にDockerビギナーがハマりそうなポイントをおさえてあるので、ぜひ確認してもらいたい。

  • コンテナ型仮想化のDockerは共通のカーネルでユーザランドを仮想化しており、例えばLinux上でWindowsのコンテナは動作しない
  • マイクロサービスになりにくくコンテナ化できないようなシステムも存在するため、適用対象のシステムを理解しておくことが重要
  • Dockerで動かしたいアプリケーションが技術的に動くかは別として、ベンダーがサポートしているかを確認する
  • 簡単にダウンロードできるDockerイメージは信頼性が担保されていないので、検証してから使用するのが好ましい

エンジニア、ライター。アクセンチュア株式会社 ソリューション・エンジニア。

連載バックナンバー

仮想化/コンテナイベント

KubeCon報告からKubernetes対応版Dockerまで、Docker Meetup Tokyo #20開催

2018/1/30
コンテナーに関する勉強会「Docker Meetup Tokyo #20」が、2017年12月14日に開催された。11月に開催された「Docker Meetup Tokyo #19」に続く回となった。
仮想化/コンテナ

Red Hatが示したOpenShiftの将来とは

2018/1/24
Red Hatが推進するコンテナープラットフォームであるOpenShiftの1dayカンファレンスが開催された。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています