ChatGPT
Docker は、アプリケーションを「コンテナ」と呼ばれる軽量な仮想環境で動作させるためのプラットフォームです。開発者が「どこでも動く」アプリケーションを簡単に作成、配布、実行できるように設計されています。
カゴヤ
Dockerとは、軽量で高速に動作するコンテナ型仮想環境用のプラットフォームです。Dockerを使うことで、1台のサーバー上で様々なアプリケーションを手軽に仮想化・実行できるようになります
上記だけの説明だと分かりずらいのですが、そもそもDockerを理解する前に、サーバー仮想化について理解する必要があります。
サーバー仮想化とは

従来のサーバーでは、1台の物理サーバーに1つのOS※やアプリケーションをインストールし、特定の役割を与え動作させるだけでした。
※Windows系OS(Windows Server)やUnix系OS(CentOSやubuntu)など
しかし、サーバーを仮想化することによって、1台の物理サーバーに複数のOSやアプリケーションを使用することができる複数の仮想的サーバーを稼働させられる仕組みです。
そのため、実際に複数のサーバーを使用しているのと同じ状況を作り出せます。
ベースとなる1台のサーバを「物理サーバー」、仮想化されたサーバを「仮想サーバー」と呼びます。
サーバ仮想化のメリット・特長
1.サーバ台数の集約/運用の効率化

アプリケーションごと、部門ごとに導入したサーバのCPU使用率をみると、各サーバとも意外と低く、サーバの性能を十分に発揮できていないことが多くあります。サーバ仮想化を導入して、複数台のサーバを1台に集約することで、サーバリソースを有効に活用できるようになります。
最新ハードウェアで既存アプリケーションを稼動
新しいOSに対応しない既存のアプリケーションも、仮想化環境を構築すれば、最新のサーバ上で運用することができ、万が一のハードウェア障害時もしっかりサポートしてもらえるので、今後も継続して使い続けることができます。
用語集
| 用語 | 説明 |
|---|---|
| 物理サーバー | ホストOSがインストールされている物理的なサーバー |
| ホストOS | 物理サーバーにインストールされているOS(一般的なPCでいうWindows OS や Mac OS等) |
| ハイパーバイザー | 仮想サーバー(VM)を作成/実行するソフトウェア |
| 仮想サーバー(VM) | 物理サーバーの余剰リソースを使用して作成されるサーバーおよび仮想環境 |
| ゲストOS | 仮想サーバー上にインストールされているOS |
参考サイト
https://www.onamae.com/business/article/4902
https://it-ichiba.jp/info/0630
サーバー仮想化の種類

サーバーの仮想化には大きく分けて3つの方法があります。ここではその3つの方法「ホストOS型」「ハイパーバイザー型」「コンテナ型」についてそれぞれ簡単に説明します。
1.ホストOS型
ホストOS型とは、ホストOS(Windows、Mac等)に仮想化を実現するためのソフトウェア(VMwareやVirtualBoxなど)をインストールし、LinuxといったゲストOSを動かす仕組みです。
2.ハイパーバイザー型
ハイパーバイザー型とは、運用中のサーバーへハイパーバイザーといわれる専用のものをインストールし、ホストを経由しないでゲストOSやアプリケーションを動かす仕組みです。
3.コンテナ型
コンテナ型は、コンテナ管理ソフトウェア(dockerやKubernetes)を使用することにより、サーバー上のOSが仮想化されるため、アプリケーションの実行環境を管理する際のゲストOSが不要となります。
コンテナとは、ホスト OS 上にアプリケーションを起動するために必要なアプリケーション本体、設定ファイル、ライブラリなどを一つにまとめたものです。
ホストOSからは、一つのプロセスとして認識されます。そのため、余分なリソースが不要であり、軽快な環境を提供できます。
改めてDockerとは?
サーバー仮想化の種類の「3.コンテナ型」にあたり、「仮想環境の構築ツール」です。「コンテナ」という仮想環境を構築し、そのコンテナの中でアプリケーション、ミドルウェア、OSなどを動かすことができます。
なぜDocker(コンテナ型)がよいのか?
1.動作や処理の高速化
コンテナ化には、仮想化に比べて動作や処理が高速化するというメリットがあります。
仮想化の場合、各アプリケーションを実行するためには、ゲストOSを起動する必要がありました。しかし、コンテナ化の場合はゲストOSを経由する過程が存在しないので、その分起動や終了といった動作を迅速に行えます。
2.移植性
コンテナにはすべての依存関係が含まれているため、ほとんどどこにでもアプリケーションを移植できます。新しい環境を考慮してビルドをやり直す必要はありません。
また、コンテナ化では抽象化を行うので、デプロイ先がどこであってもコンテナの動作は変わりません。 そのため、アプリケーションをクラウドや VM、ベアメタルにもデプロイできます。
Dockerの仕組み
ここではDocker初心者なら抑えておきたい用語をもとに、Dockerの仕組みについて理解を深めていきます。
・Dockerエンジン
・Dockerコンテナ
・Dockerイメージ
Dockerエンジン
Dockerエンジン(コンテナエンジン)は「Docker自体そのもの」という理解でいいです。Dockerイメージの作成やコンテナ起動などを行うDockerのコアな部分です。このDockerエンジンはホストOS(Windows, Mac, Linux)にDockerをインストールすることで簡単に利用できます。インストールしたらホストOS上にDockerエンジンが動き、その上で各コンテナが動いているという感じです。
Dockerコンテナ
DockerコンテナとはDockerエンジン上で動いている仮想環境のことです。
Dockerコンテナでは、CentOSやUbuntsuなどのOSから、NginxやMySQLなどのミドルウェア、RailsやWordpressなどのアプリケーションまで様々な環境を作ることができます。
Dockerイメージ
DockerイメージとはDockerコンテナを作るためのマニュアルみたいなものです。
このDockerイメージをもとにコンテナが作られます。各イメージは元のイメージとなる「ベースイメージ」となるものに、「レイヤー(層)」を重ねることで新しいイメージを作成することができます!

参考サイト
https://www.kagoya.jp/howto/cloud/container/docker/
https://qiita.com/michiru-miyagawa/items/fb41563df9dc98fdf549