wolfmasa's blog

フロンターレとプログラミング関係の話題を、気が向いたときにつぶやくブログです。

dockerについて雑感

ちょっとdockerを使う機会があったので、軽く雑感をメモ。

やってみた使い方

試行錯誤した結果、docker-composeをLinuxUbuntu)で使うのが簡単そうという結論に至る。

Mac/WindowsのDockerについて

dockerは基本的にLinuxのコンテナ技術をベースにしているので、MacWindowsではその機能を直接使えない。

そのため、現在出ている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もインストールし、使うことで、安心してサービスとして起動することができそうだ。

  1. 使いたいサービスと"docker-compose.yml"を検索する
  2. ディレクトリを作り、そこに取得した"docker-compose.yml"をwgetなどでダウンロードする
  3. docker-compose up -dで起動する

だけで、上記のサービス起動はうまくいった。

割と公式リポジトリの中にすでにdocker-compose.ymlを持っていることが多く、問題なく使えそうだ。

ちなみに、docker-compose up -dを実行すると、カレントディレクトリにある"docker-compose.yml"を参照して起動してくれるよう。

docker−compose.ymlについても、開いてみると簡単な記法になっており、何をしているのかなんとなく理解できる。細かいところに手は届かなそうではあるけど。

MacUbuntuを起動することについて

今回手頃なPCがなかったため、MacUbuntuを入れてみた。

これが結構面倒で、HDDのパーティションを作った後に、USBブートのOSを入れて、UbuntuのISOイメージを入れて、無線LANデバイスドライバを入れて、USBブートから起動してインストールしていく。

ottan.xyz

この辺が参考になった。

コンテナOSについて

コンテナOSとして、MacWindowsが使えるといいなと思って調べていたけど、Ubuntuベースだとそれは難しそうというのが現在調べた範囲。

ホストがWindowsの場合には、windowsserver/coreというMS公式イメージが使えるけど、内部でHyper−Vを使っているという説明になっているので、WindowsOS上でなければ使えないっぽい。

その辺の制約も、もうちょっと追って確認する必要がありそうだ。