開発環境のためのDocker再入門
色々と開発環境を整理したくて3年くらい前に触ってみたきりだったDockerに再入門。
既存のVagrantで構築していた開発環境、vm.boxで指定しているイメージがダウンロードできなくなっていたり、Chefでプロビジョニングしていたところが動かなくなっていたので、直すより新しく作り直した方が早いかなと言うのがきっかけ。
前に試したときはDocker Compose的なものがなく(見つけられなかっただけかもしれないけど)、公式のコンテナも少なかったので、まだ本格的に使うには色々辛みがあるなと結論づけてそっとじしたのだった。
以下つらつらとメモ。
VagrantとDockerの使い分けについて
開発環境として定番のVagrantとの使い分けについては以下のページが簡潔でよくまとまっていて参考になる。
個人開発環境をvagrantで建てるべきか、dockerで建てるべきか
個人的には何かサーバーを立てるようなものをちょちょっと試すにはVagrantでプロビジョニングして構築するの重いなと思うことがけっこうあり。
それに対してDockerだとありもののイメージを組み合わせてサクッと作れるのでいいかなと。お試し段階なら凝ったこともしないし、公式イメージを元にした多少のカスタマイズも簡単。
Dockerで開発環境を構築する上での最低限の理解と方針
- 1コンテナ1機能
- Docker Composeを使う
- 可能な限り公式のDockerイメージを使う
Vagrant代替の頭で行くとひとつのコンテナにウェブサーバーやDBサーバーをすべて含めるようなことを考えてしまうが、1つのコンテナは1つの役割のみを持つ。
ウェブサーバー、DBサーバーそれぞれごとにコンテナを作り連携させる。
そして連携したコンテナの構築と管理を簡単にするためにDocker Composeを使う。
手動での管理は無理筋。
また公式でたくさんのDockerイメージが提供されているので、可能な限りこれを使う。
必要ならば独自のイメージを構築することもやぶさかではないが、公式のイメージで間に合わせるか、多少のカスタマイズでなんとかする方針がよろしかろう。
Dockerの導入方法
DockerをMac上で動かすにはいくつか手段があるが、公式のDocker for Macを選択。
ファイル共有が遅いなど問題はあるようだが、現状では最も無難な選択肢に思えたのでこれを。
ほかの手段としては自前でVirtualBoxの仮装マシンを立ててその中に手動でDockerを入れるというのが昔ながらの方法かと思うが、入門段階の人間は問題が起きたときにVirtualBoxの設定が悪いのか、Dockerの設定が悪いのか切り分けできないのでやめた方が良い。いやほんと切り分けできない。
Ruby on Rails on Docker
ひとまずRails。
Dockerを使ってrails newから。
手元の環境を汚さずDockerでRailsの開発環境を構築できる。
応用編。
ある程度Dockerについて分かっている人向け。
WordPress on Docker
ひとまずWordPress。
docker-compose を使って WordPress テーマ開発環境を構築しよう
めっちゃ簡単。
Dockerに慣れるために
- Dockerのコマンドを色々と試してみる
- Docker Composeのコマンドを色々と試してみる
ヘルプ見たりネットに転がってるチートシートみたりして適当に。
構築や上げ下げはDocker Composeがやってくれるとはいえ、コンテナとイメージの状態の確認や削除、再構築などは適宜行う必要がある。
Dockerのイメージはどこに保存されるんだろう?
Docker for Macでimageをpullしたのに/var/lib/dockerディレクトリがない
次のディレクトリ以下の仮装マシンの中にある。
~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux
かなり肥大化するので定期的に削除るのが正しいか。