今更ながらDockerまとめ

そもそもDockerって何?

コンテナ型の仮想環境を作成・配布・実行するためのプラットフォーム

だそう。



仮想環境(仮想マシン)って?

仮想化されたサーバーなどを「仮想環境(仮想マシン)」と呼ぶ。

仮想化

物理的な環境に囚われず仮想的な環境を作り出すこと。
一つの物理サーバに対し、サーバ内のリソースを分割することで仮想的にいくつものサーバが存在しているように見せる技術。



コンテナ型って?

仮想環境を作り出す方法の一つ。
仮想化の方法には大きく分けると、ホストOS型・ハイパーバイザ型・コンテナ型の3つある。

ホスト型

ホストOS上に土台となるソフトウェアをインストールし、そのソフトウェア上で仮想マシンを稼働させる方式。


ホストOSとゲストOSの違い

ホストOS=仮想環境の土台となるOS、つまり物理サーバにインストールされたOS。
ゲストOS=仮想マシン上にインストールされたOS。

ハイパーバイザー型

ハードウェアへ直接インストールし、その上で仮想マシンを稼働させる方式。


コンテナ型

ホストOSの上にゲストOSを起動せずに、仮想マシン(コンテナ)上のアプリのみを起動する仕組み。

仮想マシンと同じように、コンテナ内からはあたかも独立した物理マシン上で動作しているように見える。

仮想マシンとコンテナの違い

仮想マシンでは、それぞれにOSを動かさなくてはいけない。
そのため、仮想マシンごとにプロセッサやメモリを消費し、ストレージも必要になる。

一方コンテナでは、1つのOSで稼働するため、プロセッサやメモリの消費は少なく、ストレージの使用もわずかで済む。
そのため、仮想マシンに比べて起動時間が短く、同じ性能のハードウェアであれば、より多くのコンテナを同時に動かすことが可能。



さっきからちょいちょい出てくるコンテナとは?

一言でいうと空間?(合っているのか...?)

Dockerは、従来のハイパーバイザー型の仮想化とは異なり、
1つのOS環境に、コンテナと呼ばれる分離された空間を作成し、
その分離された空間(コンテナ)ごとに異なるOS環境を実現することができる。

イメージを基にコンテナが作られる。



イメージとは?

コンテナを実行するときに必要なファイルシステム(記憶装置に保存されたデータを管理し、操作するために必要な機能)。
イメージを実体化(インスタンス化)したものが、コンテナと呼ばれる。



Docker Compose

Dockerに含まれるツールの一つ。
複数のコンテナを実行・管理するためのツール。
複数のコンテナから成るサービスを構築・実行する手順を自動的にし、管理を容易にする機能。

→docker-compose.ymlファイルを実行してる部分がまさにそれ。
ファイルには、各コンテナはどのイメージから作るかや、追加設定を書き込んでおくことができる。



Dockerfile

コンテナの構成内容をまとめて記述したもの。
docker buildコマンドでDockerfileの上から順に処理されていく。

公開されているDockerイメージをそのまま使うのではなく、必要なパッケージやアプリ、各種設定を含んだDockerイメージを自分で作成して使用することができる。
その場合、Dockerfileを作成し、それを使用して必要なDockerイメージを作成することができる。
Dockerfileには、ベースとするDockerイメージに対して実行する内容を記述することになる。