とにかく時間がないのは半分こいつのせいだが感想を書いておく。
Versionは7.2、CentOS6.5に乗っかているやつである。
前提
docker run -i -d -t base /bin/bash /start.sh
利点
制限事項
- x64のみサポート
- 一応ARMで動くらしいが・・・
- サービスの呼び出しがとにかく普通にできない。起動スクリプトを書く前提で以下の制約がかかる。
- CRONがうまく動かない。
- CRONDを起動しても動いてくれないみたいな。
- そこはshellで何とかするしかないんだけどそれも不完全・・・方法は何があるか考える必要が
- IPアドレスがRUNの度インクリメントしていく
- FUSEというかmount周りが現状使えない
- ライブマイグレーションができない。
- 環境変数がめんどくさい
- まあ/etc/profile.d/env.shとかでexportしたら大丈夫ではある。
- Ubuntuはちょっと微妙。多分書くとこ間違ってるので反映されない。
- ポートをホストにバインドできるが、外からアクセスさせるにはiptablesのフォワード設定が必要
- もちろん、ipv4のパケットフォワードの設定もホストに必要。
- コンテナ間通信がめんどくさい
- コンテナに名前は起動時に設定できるが、コンテナ内部からはわからない。
- linkオプションがあるが互いに名前が判明している限りに於いてのみ有効
- 要するにアドホックに立ち上がってコンテナが自分の名前は何か知るすべはない。
- この辺に於いてSerfとかが好まれるのではと思う。
- DDNSでも立てて内部スクリプトを書いて起動引数に独自に名前を与えるしかないような気もする。
- ホスト名がコンテナID
- なので、起動したらそこからDockerホストに問い合わせて名前を確定→DDNSに登録と言うのが順当ではと思われる。
- コンテナから見てDockerホストのIPアドレスは一定だが、そのIPを指定してバインドされたポート経由で他のコンテナとの通信はできない。
- 多分ルーティングテーブルと絡みがありそう。
- とは言え、相手のコンテナIPアドレスがわかっていれば通信は可能。
用途
- 最新のブラウザを使ったヘッドレステスト環境
- DB,AP鯖
- 普通。難しくはない。
- ただしマウントができないのはかなりきつい制約でもある。IOの分散がホスト依存に成るのがめんどくさい。
- 大量同一環境の養殖
目指す地平線
問題はここ。アプリの作動する基盤がお手軽に用意が可能で、しかもその性質はイメージが同じであればほぼ同等、均質。なのでなんとかいろんなマシンを一瞬で利用可能にする可能性を秘めている。
もちろんOpenStackとかでもいいんだけど、コンテナの専有リソースが劇的に少なく、かつ分離も出来るのもいい。なのでその用途に強いアプリならいいのではと思う。問題はその力が発揮される適当なマシンが無いのが辛い。
理想を言えば、小さくて省電力でIOの太いスティック状のウェアラブルなメイニーコアマシンを二桁ほど身につけてウェアラブルグリッドを構成してその上で上記のDockerリモートAPIを使ってイメージをとっ替えひっ変えしながら面白いことが出来ればと思う。それはARの踊る第二現実をHMD越しに見るいわゆるネットスフィアの走りであり、クラウドも重要なんだけどコストと回線がネックに成るその時に。ただ、結局いつもネックに成るのは排熱と電熱効率で、現在の省電力技術の流れではなく、フルロードで24時間以上稼働が衣服の下で可能であるというのが条件なのだが・・・・難しい。
出来ると嬉しいこと
上記を踏まえて欲しいのはDockerOnDockerとかLXConLXCができればなと。何が言いたいかというと、この世にPCを駆逐しながら広がるデバイス、スマホのことである。自由のないiOSは於いておくとして、AndroidにはDebianKitという神がかったアプリがあってここでUbuntuのユーザランドが使える。Kernelの3.10あたりでDockerは作動するので、次の次ぐらいのAndroidのLinuxKernelで動くのではないかと推測される。
このDebianKitはまあChrootなのでLXC相当になるので、そこで動けばー、スマホでDockerグリッドが作動可能に成る。夢が広がるのである。