dockerについて雑感
ちょっとdockerを使う機会があったので、軽く雑感をメモ。
やってみた使い方
試行錯誤した結果、docker-composeをLinux(Ubuntu)で使うのが簡単そうという結論に至る。
Mac/WindowsのDockerについて
dockerは基本的にLinuxのコンテナ技術をベースにしているので、MacやWindowsではその機能を直接使えない。
そのため、現在出ているdocker-toolはVirtualBoxなどの仮想環境をベースに動いている。
自分の使っている環境では、VirtualBoxでのパブリックネットワークが使えないため、必然的にコンテナ(ゲストOS)がポートフォワードを使うことになり、サービス側で表示に使うポートと、HTTPリクエストで用いるポートが異なり、結果として表示がうまくいかないことがあり、解決できなかった。
これは元々、Vagrantを使って環境を構築した際から発生している問題で、Railsなどハックできるアプリであれば、内部的なポートとHTMLで表示に使うポートを無理やり変えたりして、つまりモンキーパッチを当てることで対応していたけど、意外にこれがしんどい。
なので、VirtualBoxの問題が解決しない間は、実質的にMac/Windowsでdockerを使うことが難しい。
やってみたこと
あたりを入れてみた。
コツをつかむまでは、Node.jpでERRになる、起動してもHTTPリクエストに応答しない、など問題が出た。
4つをいっぺんに起動してもサクサク動くことが確認できたので、やはり動作が軽量ということは正義だと思った。
ちなみに、まずは起動してみた程度なので、運用面についてはまだフォローできていない。
一番簡単だと思われる導入方法
結局、行き着いた結論は、docker-composeを使うと一番簡単にイメージを利用できることがわかった。
dockerの基本が分かっていない状態で利用すると、すぐに複数のコンテナを利用するサービスがうまく連携動作してくれない問題に行き着く。
それは、オフィシャルのインストール手順であったり、他のブログの記事であったりしてもそうだが、どうやらdockerの進歩、変化に記事が取り残されていることが多いようだ。
なので、現在の最新のdockerであれば使えるdocker-composeもインストールし、使うことで、安心してサービスとして起動することができそうだ。
- 使いたいサービスと"docker-compose.yml"を検索する
- ディレクトリを作り、そこに取得した"docker-compose.yml"をwgetなどでダウンロードする
- docker-compose up -dで起動する
だけで、上記のサービス起動はうまくいった。
割と公式リポジトリの中にすでにdocker-compose.ymlを持っていることが多く、問題なく使えそうだ。
ちなみに、docker-compose up -dを実行すると、カレントディレクトリにある"docker-compose.yml"を参照して起動してくれるよう。
docker−compose.ymlについても、開いてみると簡単な記法になっており、何をしているのかなんとなく理解できる。細かいところに手は届かなそうではあるけど。
MacでUbuntuを起動することについて
今回手頃なPCがなかったため、MacにUbuntuを入れてみた。
これが結構面倒で、HDDのパーティションを作った後に、USBブートのOSを入れて、UbuntuのISOイメージを入れて、無線LANデバイスドライバを入れて、USBブートから起動してインストールしていく。
この辺が参考になった。
コンテナOSについて
コンテナOSとして、MacやWindowsが使えるといいなと思って調べていたけど、Ubuntuベースだとそれは難しそうというのが現在調べた範囲。
ホストがWindowsの場合には、windowsserver/coreというMS公式イメージが使えるけど、内部でHyper−Vを使っているという説明になっているので、WindowsOS上でなければ使えないっぽい。
その辺の制約も、もうちょっと追って確認する必要がありそうだ。