──クラウドネイティブ・ロードを突き進む一行。徐々にコンテナについて分かり始めたサトルは、クラフに対してある疑問を投げかけてみた。
サトル:「コンテナの仕組みは理解できたけれど、実際、どうやってコンテナを導入するの?」
ディア:「そういえば、従来の仮想化ではハイパーバイザーという仮想マシンの作成と実行をするためのソフトウェアをインストールするんだったね。コンテナにもそういったものがあるの?」
クラフ:「コンテナ環境の実装手段として有名なのが『Docker(ドッカー)』だよ。Dockerは、Docker社が提供するオープンソースソフトウェア(OSS)なんだ。コンテナを作る(Build:ビルド)、共有する(Ship:シップ)、実行する(Run:ラン)基盤になるよ。コンテナをユーザーフレンドリーにしてくれたんだ」
ディア:「VMware社が提供している、ハイパーバイザーを管理する『vCenter』のようなイメージなのかな」
クラフ:「そうだね。以前、コンテナ技術自体は昔から存在していたと説明したと思うけど、Dockerによってコンテナが使いやすくなり、爆発的にコンテナが認知されるようになったんだ」
コンテナ環境を提供する、オープンソースソフトウェア
サトル:「実際にDockerはどのように使うものなの?」
クラフ:「Dockerでは『Dockerエンジン』をLinuxにインストールしてコンテナを実行するんだ。Dockerエンジンは『Dockerコマンド』や複数のコンテナを操作できるツール『Docker Compose(ドッカーコンポーズ)』などによって『Dockerコンテナ』を操作するよ。また、Dockerエンジンをインストールしたコンピュータを『Dockerホスト』と呼ぶんだ」
「Dockerエンジン」をインストールしてコンテナを実行
ディア:「なるほど。Dockerの使い方の仕組みをもう少し詳しく教えて!」
クラフ:「じゃあ、まずはコンテナ作成の仕組みを説明しよう!」
Dockerでは、コンテナの元になる「Dockerイメージ」を使ってコンテナを作成するんだ。Dockerイメージとは、アプリやフレームワーク、ライブラリ、Linux基本コマンドなどいろいろな種類のファイルが固められている、アーカイブパッケージなんだ。コンテナは、このDockerイメージをダウンロードして作成されるよ。
Dockerは、通常のアプリ開発のようにプログラムのコードを書いていくのではなく、事前に用意されたDockerイメージを展開してコンテナを作成するんだ。
コンテナの元「 Dockerイメージ」を使ってコンテナ作成
サトル:「すごい! コードを書かなくてもすぐにアプリケーションを展開できるのか!」
クラフ:「そうだね。また、Dockerイメージは、コンテナ内にデータを持たないんだ。データなどを保持せず、入力の内容によってのみ出力が決定されるこの状態を『ステートレス』と呼ぶんだ」
ディア:「コンテナの特徴の1つが『コンテナ内にデータを持たない』だったね」
クラフ:「その通り。データが必要な場合は、永続ボリュームをマウント(取り付け)してそこで保持するデータを利用するんだ」