docker
基礎
creatus

当記事の目的

2017年現在、ブームというより必須スキルとなったdockerを勉強して時代遅れエンジニアにならないようにする
dockerを含めた、アプリケーションの基盤(アプリそのものではなく)を構築することによって、低レイヤの部分も意識できるエンジニアになる

dockerの概要

コンテナ型仮想環境

Linuxカーネルが持つ「コンテナ」機能などを使用して実行環境を他のプロセスから隔離し、その中でアプリケーションを動作させる。
コンテナはLinuxの通常のプロセスとほぼ同じものだが、利用できる名前空間やリソースが他のプロセスやコンテナからは隔離され、それぞれ固有の設定を持てるようになっている。そのためコンテナ内のアプリケーションから見ると、独立したコンピュータ上で動作しているように振る舞う。
そして、コンテナはLinuxカーネルが持つ次の機能を利用して実現している。

名前空間の隔離機能

ファイルシステムやコンピュータ名、ユーザ名(ユーザID)、グループ名(グループID)、プロセスID、ネットワーク機能などをコンテナごとに独自に設定できる。

リソースの隔離機能

CPUやメモリ、ディスクI/Oなどをコンテナ内で利用するリソースをほかのコンテナから隔離したり、設定に基づいて振り分けたりする機能。

ハイパーバイザ型(VMwareなどの従来の仮想環境)との違い

図1
Untitled Diagram-2.jpg

図1を見るとコンテナだけでなくdocker(コンテナの管理プロセス)自体もホスト上のアプリケーションレベルで動作している。docker自体はLinuxにもともとある仮想化関連の技術を組み合わせるとともに、それらを管理する機能を提供している。

まとめ

従来のハイパーバイザ型と比べて軽いこと(動作だけでなく、持ち運びも)が読み取れる。
次回、もう一回だけ座学をして、その次に実際に動かしてみよう。

次号