Dockerとは
思うようにならない境遇や不運な境遇のことを言う!
(島本和彦「逆境ナイン」より)
嘘です。冗談です。(ちなみに上記は「逆境」の定義です)
世の中にはDockerに関するいろんな良質なドキュメントがあるので自分なりの解釈をまとめてみました。
一言で言うと
Dockerとは、コンテナ型仮想環境プラットフォームの一種。1
優しく詳しく言うと
あるOS上でWebサーバーやアプリケーションサーバーなどをまるでOS上に別のコンピューターが動いているかのように独立した環境で動かす仕組みを仮想化と呼んでいる。
仮想化には、仮想のコンピューター(仮想マシン)をOS上にソフトウェア(HyperVisor)で作りその中で別のOSを動かすもの(Xen, Hyper-V, VirtualBoxなど)もあるが、コンテナの場合は、OSの中核を担うプログラム(カーネル)にはコンテナが稼働しているOSのものを利用する。コンテナの場合、独立した環境を作るために割当てされていないコンテナの外のリソースをコンテナの中のプログラムは利用することができないようになっている。
なぜDockerを使うのか
開発に仮想環境を用いる優位性
- 開発者のPC上に環境構築できるので経済的
- 構成管理ファイルを使うことで、どこでも同じ構成の環境が構築できる → gitなどと相性がいい
- コンテナが稼働しているOSからリソースが分離されているので、コンテナの外に悪影響を与えにくい
- 環境作成・環境の破棄が容易にできる
コンテナ型仮想環境がHyperVisor型仮想環境より有利な点
- OSとの間にHyperVisorを挟まず、直接OSの基本機能を使うので、オーバーヘッドが少ない → 動作が軽い
Dockerが有利な点
- コンテナイメージが公開・共有されているので他の人が作ったイメージを再利用して独自のイメージにできる
- アプリケーションベンダーの公式コンテナイメージがあるため、安心して再利用することができる
- 不要なアプリケーションの搭載を抑えたコンテナイメージがあるため、コンテナの省スペース化を図り易い
まとめ
Dockerとは!?
思うように作ったり壊したりできる自由な環境構築ができる、コンテナ環境型プラットフォームのことを言う!
そしてそれは現代の開発環境構築やCI/CDに有利で不可欠なものだと人は言う!