#この記事の目的
技術的にDockerが使えるようになりたくて先日環境構築をして、「この作業いるのだろうか...というか逆にコンテナ消したり作ったりするから通信量ばかになってなくないか...なんか重いし...」とふと疑問が湧いてきたので調べてみました。
#Dockerとは結局何者なのか
非常に軽い仮想環境(バーチャルマシン)です。似たようなものとしてVMware,VirtialBox,bootcampなどがあります。
用途は環境構築(OS)からプロジェクト完成までの変化を記録してくれる、Gitの亜種だと理解するといいそうです。(筆者の感覚だとGitHubの亜種です)
環境構築を多人数で行う時、途中までをpushしておいて、途中から別な人がpullして付け加えていく使い方になります。
docker pull
はgit pull
と同じで差分だけダウンロードされます。
#Dockerの良さは?
######バージョン管理の容易さと環境の準備の容易さ
ローカルの開発環境から独立し、OSの階層からアップロードされたものだけを使うため、gemのバージョンやOSの統一などを一切気にしなくて良くなります。MojaveとCatarinaという違いどころか、Windowsで同じプロジェクトをやっても大丈夫です。
######コンテナ化のシステムではダントツ軽い
通常コンテナを使う際にはOSを入れなければいけないのですがdockerだとOSにubuntuを使用すればストレージの使用量が123MBで済むためVMwareやbootcampなどと比べた時圧倒的に仮想環境で使用するストレージ容量が小さいです。bootcampでwindowsを快適に使うには50GBは必要です。
######デプロイがわかりやすい
AWSのEC2(Elastic Cloud Container)を使わずdockerで作成し、仮想環境で作ったものをそのままpullすればwebに公開できるのでわかりやすい、らしいです。(未実施なので今後確認します。ただ確かにEC2で作業していた時はコンパイルの問題とアプリケーションの起動の問題で悩まされており、それがDockerfileにRun ~ と書いてあるだけで動くならとても楽だと思います。ちなみに前回はcapistranoという自動デプロイ機能のgemのおかげでなんとか乗り切りました。)
#参考
https://iga-ninja.hatenablog.com/entry/2018/06/28/091412