##Dockerとは
・アプリの実行環境をラップしてくれる
=> ホストがライブラリやミドルウェアで汚れない(node.jsやrubyなどをホストに入れなくて済む)
=> 環境構築が楽になる。
・実行環境を共有できる
=> チーム開発でもチーム間で同じ環境を一瞬で揃えられる
=> ネット上の猛者たちが作ってくれたコンテナ(開発環境)がネットに沢山転がっている。
・VMと比べて軽い
##イメージ[ Image ]とは
・オブジェクト志向で言うところのクラス(設計書)
・Dockerfileを基にビルドされる。
・Dockehubを用いてイメージそのものの共有も可能
=> Dockerfileも共有可能だけどDockerfileをbuildして作成されたイメージの共有も可能
・もう大体のケースを想定して作られたイメージが既にDockerhubに配布されている
・Dockerfileをビルドするコマンド
=> $ docker build [Dockerfileのpath]
##コンテナ[ container ]とは
・オブジェクト志向で言うところのインスタンス(具現化)
・イメージで作成された実際の動作環境
・起動時のコマンドが終了すると自動で終了する(?)
・原則一つのコンテナに一つのアプリケーション
=> データベースのコンテナ、アプリのコンテナに分けるといいらしい
・起動のコマンド
=> docker run : imageからコンテナを作成して起動
=> docker start : 既にあるコンテナを起動
例えば、Nginxのコンテナを起動
=> docker run nginx
=> Docker をインストールしてこのコマンドを叩くだけでnginxのwebサーバが立つ!!
=> docker -volume で操作したい対象(例:app/ とか)をマウントが可能
=> volume : コンテナを削除しても情報をコンテナの外に残す(例:DBとか)
##Dockerfileとは
・このファイル内でライブラリやミドルウェアのインストールを記述できる
・これを他人に配布すると同じ環境が作れる
・既に便利なイメージがあるので(初心者は)そこまで書くことはないかも
・docker build でビルドが可能