Docker
Dockerとはなにか?
コンテナ型の仮想化ソフトウェアの一つ
仮想化とは何か?
物理マシンの内部にあたかも複数のマシンが存在しているかのように物理マシンのリソースを分割管理するシステム。
仮想マシンとは?
ハードウェアの一部をソフトウェアで実現した物理マシンのように見えるもの
じゃあ物理マシンとは?
CPU, ストレージ、メモリなどのハードウェアで構成されるコンピュータのこと
なぜ仮想マシンを使いたくなるの?
一つの環境が壊れた時に別の環境に引っ越ししやすい
複数の環境を一台の物理マシンに構築しやすい
自分の環境を他のマシンに再現しやすい
仮想化ソフトウェアの種類にはどのようなものがあるか?
ホスト型仮想化
ホストOSにインストールしてゲストOSを管理する
VitrualBox
ホストOSとゲストOSは共存できるが、ゲストOSは物理リソースまで遠いので重たい
ハイパーバイザー型
ホストOSは存在しない。物理マシンにインストールする
Hyper-VやVMware ESXiなど
コンテナ型
ホストOSのリソースの一部をコンテナから利用する
ゲストOSは起動しない
Linuxのコンテナを起動するには、ホストマシンからLinuxカーネルを借りる
ホストマシンがLinuxでない場合は、なんらかの方法でLinuxカーネルを用意してLinux仮想マシンを起動する必要がある
Docker Engine
アプリケーションパッケージ
デーモンと呼ばれる常駐プロセス
デーモンが提供するAPI
CLIクライアント
Linux仮想マシンの上にDockerデーモンがいる
https://scrapbox.io/files/6694ac9f804020001c07d967.png
コンテナ
コマンドを実行するプロセスを名前空間ごとに隔離したもの
そのプロセスが終了すればコンテナ自体も終了する
そのプロセスはPID(プロセスID)が1になる
イメージ
コンテナの実行に必要なパッケージで、tarファイル