いい加減にDockerで遊びたい

HaiTo

2016/03/23

Docker

  • コンテナタイプの仮想環境を作る何か
  • 「仮想」について深く掘り下げると大学時代の懐かしい思い出が蘇ってくるので掘り下げない
  • VMWareとかの仮想化に比べて、OSとかを完全にエミュレートしたりするわけじゃないので安い
  • が、いろいろ制約もあったり。

Docker

  • 「安い」のが良さ
  • コンテナの起動とかが早い(VMWareとかのOSの起動から始まる奴に比べれば)

docker-machine

  • 君は india を覚えているか

docker-machine

  • Dockerのコンテナはその性質上、HostのOSと同じOSのコンテナしか立ち上げられない
  • 当たり前だよね。だってOSを立ち上げているわけじゃあないし。ファイルシステムとかで切り分けているだけだし。
  • でも大体みんなOSX。
  • OSXを気軽に立ち上げられたらよかったけど……(ハッキントッシュのことは忘れてくれ。頼む)
  • というわけで、まずはLinuxのマシンをOSXの人やWindowsの人は立ち上げる必要があるわけ。
  • boot2docker

docker-machine

  • Vagrantとか出てきて楽になったけどメンドイのはメンドイ
  • そこで現れたのが docker-machine。コマンド一つでLinuxOSが立ち上がる便利ツールさん
  • そしてその立ち上げ先としていろいろ選べる。
  • EC2,DigitalOcean, もちろんローカルのVirtualBox……
  • boot2docker とかVirtualBoxのアレコレを忘れられるぞい

docker-compose

  • 君は india を覚えているか

docker-compose

  • Docker Container のオーケストレーションを実現する為のソフトウェア
  • これがない時代はいろいろ大変だった
  • link オプションだよりで、docker run --link ... みたいなシェルスクリプト芸
  • yaml に「このコンテナはこのコンテナと繋がっていて、そのアドレスとポートはこれで、環境変数は」……と定義しておく
  • yaml はヒューマンリーダブルですよ。本当に。JSON? 知らない子ですね……

で、何が嬉しいの?

  • Microservices 間のPortの定義とか、いろいろ全部一箇所にまとめてかいて手元で全部バーンとあげて試して……とかが出来る
  • ほかは……まぁ使い捨て?られそう? MySqlを永続化したら意味ないけどね?
  • 本番まで全部Dockerにするなら、話はいろいろ変わるだろうけど辛いらしいからちょっと……

で、デモは?

  • う、動くかなぁ……
  • 結構複雑なサービスだからなぁ僕達のは……

デモに至るまでの道のり

  • RAILS_ENV=docker を作る
  • 専用のapplicayion.ymlのKeyとかDatabase.ymlのENVを設定する
  • 最大の敵は Private Gem。 bundle package --all で全部キャッシュすることに。
  • なんか動かないの連続……

や、やった……!

  • 動いたよ!!!おじちゃん動いたよ!!!
  • git checkout dockerable