Dockerについて
Dockerとはコンテナ型仮想化ソフトウェアの一つです。
公式サイトではアプリケーションの開発・実行・配布するためのプラットフォームと書かれています。
コンテナ型仮想化
コンテナ型の仮想化ソフトウェアは、ホストOSにインストールしてコンテナという単位でアプリケーションを管理します。コンテナをアプリケーション単位で分けると、それぞれアップデートしやすかったり、依存関係がわかりやすくなります。 例:PHPとMySQLのサーバーを動かす場合、2つのコンテナを起動 コンテナ型の仮想化はゲストOSを持たないので、ホストマシンからLinuxカーネルを借りなければならないです。 ※カーネルとはOSの中核をなすソフトウェアのこと
コンテナについて
Dockerのコンテナは、あるコマンドの1つを実行するためのホストマシンに作られる領域のことです。
この領域とはプロセスやファイルなどを、ホストマシンや他のコンテナと影響し合わないようにするための独立した範囲のことです。
プロセスについて
プロセスとは実行中のプログラムのことです。
Linuxのプロセスの場合、コマンドを実行するとプロセスが生成され、役目を終えるとプロセスが終了します。
例:ls
と打つとlsコマンドのプロセスが生成され、ファイル一覧が表示された後にlsコマンドのプロセスが終了する
Docker Engine
デーモンと呼ばれる常設プロセス、デーモンが提供するAPI、CLIクライアントの3つを含む、アプリケーションパッケージのことです。
デーモンはクライアントからの命令を待ち、命令が来たらコンテナの構築や実行をします。
CLIクライアントはdocker run
のようなDockerコマンドのことで、APIを通してデーモンに命令を伝えます。
Docker Compose
複数のコンテナを一括で操作するためのツールのことで、docker compose up
のようなコマンドを提供してくれます。複数のコンテナの操作をyamlファイルの定義に従い、1つのコマンドで実行してくれます。
Dockerを使用した開発環境では、複数のコンテナが必要になる事が多いので、
Docker Image
イメージはコンテナに実行に必要なパッケージで、複数のレイヤと呼ばれるtarファイルから成り立ちます。
コンテナはイメージから作成されるので、複数人で同じコンテナを起動したい場合イメージを共有すれば可能です。
イメージはDockerHubなどのサービスで公開されており、利用したい場合はダウンロードする事ができます。
レイヤについては詳しく知りたい場合は下記のサイトを見ると参考になるかもしれません。
Dockerfileを理解して書きたくてレイヤ構造を拝んできた忘備録