はじめに
Dockerというと、phpなどのサーバー言語をの時に使うというイメージがあると思います。
確かにその通りなのですが、Dockerではなくても他の環境でも扱えますよね。
例えばMAMPやvirtualboxなど。
何が違うのだろうと思ったので、馬鹿なりに調べてみました。
深くは踏み込んでなく、タイトル通り超超超基礎になっております。
かなり大雑把なので随時更新していきます。
最終更新23/03/28
環境構築の種類
環境構築には大きく分けて3種類あるそうです。
環境名 | 代表的なもの | 特徴や使いどき |
---|---|---|
ホスト型仮想化 | VirtualBox等 | 開発環境やテスト環境で使用される |
ハイパーバイザ型仮想化 | KVM等(あまり知らない) | 大規模なデータセンターやクラウド環境で使用される |
コンテナ型仮想化 | Docker等 | 開発環境の構築やデプロイメントで使用される |
ホスト型仮想化
ホストOS(macを使っている人はmacOS)、仮想マシン(VirtualBox等で作成できる)、ゲストOS(仮想マシンにインストールしたもの)が存在している。
OSの中にOSを導入するので、処理が重い!
ハイパーバイザ型仮想化
ハイパーバイザ型仮想化は、ハイパーバイザと呼ばれるソフトウェアを直接ハードウェア上に実行し、その上で複数の仮想マシンを実行する方式です。ハイパーバイザは、ハードウェアに直接アクセスできるため、ホストOSのような仲介ソフトウェアが不要であり、より高いパフォーマンスが得られます。また、ホスト型仮想化と比較してセキュリティ上のリスクが低く、仮想マシンごとに異なるOSを実行することができます。
(難しい。必要になった時に詳しくしらべるでいいかも。)
コンテナ型仮想化
ホストOSとプロセスが同期されているため、ゲストOSを用意する必要がない。
※コンテナ型仮想化が普及した現在では、ホスト型仮想化やハイパーバイザ型仮想化の使用頻度は低下しています。
Dockerイメージ
Dockerイメージとは、Dockerコンテナを作成するための「テンプレート」のようなもので、Dockerコンテナに必要なファイルや設定、アプリケーションなどが含まれています。
Dockerイメージは、Dockerfileと呼ばれるテキストファイルに記述された手順に基づいて作成されます。Dockerfileには、ベースとなるOSイメージの指定や、必要なパッケージやファイルのインストール、設定ファイルのコピーなど、Dockerイメージ作成に必要な手順が記述されています。
Dockerイメージは、Dockerコンテナを実行する際に必要となるため、自分で作成したイメージを保存しておくことで、再利用性を高めることができます。
DockerとLinuxの関係
Dockerは、Linux上で動作するアプリケーションであり、コンテナ型仮想化を使用してアプリケーションを実行するためのプラットフォームです。
Docker DesktopなどのDocker環境を起動している場合は、LinuxはDockerイメージに含まれているので、あえて自分で導入しなくても大丈夫です。