LoginSignup
7

More than 5 years have passed since last update.

dockerとは何か

Last updated at Posted at 2017-12-09

当記事の目的

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

dockerの概要

コンテナ型仮想環境

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

名前空間の隔離機能

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

リソースの隔離機能

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

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

図1
Untitled Diagram-2.jpg

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

まとめ

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

次号

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7