第4回 「Dockerのクジラロゴ」が意味するもの古賀政純の「攻めのITのためのDocker塾」(2/3 ページ)

» 2015年07月22日 08時00分 公開

コンテナ船とコンテナ、あの形が重要

 Dockerの本質を見極め、より正しくDockerを理解するために、ここではDockerのロゴアイコンにもある実際の「コンテナ船」やコンテナそのものの形状から、Dockerとは何かをひもといていきましょう。

 商用OSの世界でも、SolarisゾーンやHP-UX Containersなどのように、コンピュータ資源を分離する「コンテナ技術」が発展していきました。ここで、コンテナという言葉が出てきます。コンテナとは船や列車などの貨物輸送で使われる容器です。一隻に大量のコンテナを積載して運ぶ貨物輸送船を思い浮かべて下さい。

 なぜ貨物でコンテナが利用されるのでしょう。容器を直方体の箱にすれば船の限られたスペースにすき間なく積み上げて効率よく配置でき、異なる種類のコンテナ同士で内容物が混ざるといったトラブルも避けられます。依頼主にも管理側にもメリットがあるからです。

 この「隙間なく積み上げて配置できること」と「内容物が混ざるトラブルが発生しないこと」という点が非常に重要です。コンピュータにおけるコンテナも同じ考え方です。コンピュータにおいて、一隻のコンテナ船はホストOSです。その上に載る大量のコンテナの群れには、それぞれさまざまなアプリのプロセスが稼働しています。隙間なく積まれたコンテナの群れをよく目を凝らしてみてみると、コンテナ同士はぴったりとくっついて配置されていますが、お互いのコンテナは、となりのコンテナの内容物(プロセス)は知り得ません。すなわち、ホストOSであるコンテナ船から見た人は、コンテナという分離された空間がいくつも存在するかのように見えます。これが、分離された空間=コンテナと呼ばれるゆえんです。

 また、船の平らな甲板にコンテナが直接触れて置かれている点も重要です。平らであるということをコンピュータに置き換えると、ホストOSとコンテナが直接触れているということは、ホストOSとコンテナの間にはハイパーバイザーのような介在者がいないことになります。すなわち、コンテナで稼働するアプリのプロセスは、ホストOSから直接起動されているのです。

 介在するものがないので、船が大きく傾かない限りは安定してコンテナを輸送できます。ホストOSがしっかりしていれば、分離された空間で稼働しているプロセスの制御をテキパキと行うことができるわけです。

photo 青いクジラのDockerのロゴ

 ここで改めてDockerロゴの青いクジラの背中を見てください。平らです。その上に、コンテナがすき間なく積載されています。Dockerのロゴに描かれている絵のデザインは、アーキテクチャの非常に重要な部分を示しているのです。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ