Dockerとは
"Linux"の仮想環境ツールである
Dockerの仕組み
元々Linuxが持っていた機能を組み合わせたものであり、
・仮想化はLinuxのハンドルとかの様々なIDを名前空間で独立させることで行っている
・ファイルシステムもルートディレクトリを移動させるコマンド(chroot)を使って独立させている
・cpu使用率やメモリ量もLinuxのcgroupsという機能を使って割り当てることが出来る。
要するに、プロセスがメモリ空間を分離されてお互いに非干渉であることが保証されて動いているように、
それ以外のファイルシステムなどの要素についてもまるで別PCで動いているかのレベルで空間分離させている。
なので実は仮想化というよりもコンテナ化である。
使い方
・コンテナ環境を定義した"Dockerfile"を作成する
・Dockerfileをビルドしてimageを作成し、imageから docker run でcontainerを起動する。
→Linuxコマンドに例えるなら、ファイルシステム上に格納されている実行ファイルがimageで、
それを実行してメモリ上で動いているプロセスがcontainerに対応する。
・imageは、ベースとなるimageを元に必要な処理を追加記載して作成する。
・DockerHubというサービスに様々なimageが登録されている