Dockerを使いこなすには。Dockerはこの先どこへ向かうのか? Docker座談会(後編)
後編である今回は、ある程度の規模で実運用に使うときの課題や、利用する側の企業の課題、Dockerの上のソフトウェアの動向、Docker社の動向、といったテーマでお送りする。前編はこちら。
複数のコンテナーでシステムを組むのはまだ大変
松井:Dockerも、1つのコンテナーならいいのですが、複数のコンテナーでシステムを組むときには、いろいろ考えることが出てきますよね。ネットワーキングやストレージ、スケジューリング、バランシングなど。
そうすると結局PaaSのようになってきて、OpenShift 3やFlynnのようなシステムになる。でもロックインされるのは楽しくない。みんなKubernetesを使うならいいんでしょうけど、そうじゃないんで。
平:コンテナーのリンクを使えば、ほかのコンテナーを環境変数で渡してクラスターを組むことはできます。ただし、参照されるサーバーを先に立ち上げるといった順番が決まっていますし、1つのコンテナーが落ちて上げなおすには、関連するものを全部上げなおしになる。
松井:そうなるとKubernetesとかMesosとかを使わざるをえないということになりますね。Dockerは、SwarmとComposeを使えばできると言っていて、あまりイケているとは思わないけど、ある程度の選択肢にはなるとは思う。
最近そのあたり、OpenShiftもそうですけど、Dockerを中心としたエコシステムがいろいろできている。ただ、それはそれで、流行りすたりが出てきていて、流行らないものに乗っちゃうと大変だなあという気はします。
横田:それを見極めるのが本当に難しいですよね。
平:本番環境にDockerを適用するうえで、いかにコンテナーのポートを外のサービスと結びつけるか。開発のときはDockerから情報を調べればわかりますが、本番環境でサーバーのコンテナーがたくさん動いているときに、どのコンテナーにつなぐのか、それがネックになってきます。(前佛氏に)どうでしょう、セオリーを聞きたい。
前佛:いや、公式的な見解はないかと思います。Docker社としては、その場その場で違うので、いろいろやってみてくださいと。あと、いろいろなスケジューラーが出ているので、いろいろ使ってくださいと、そういう感じだと思います。そのエコシステムのエンジンとしてDocker Engineがある。ただ、そう言いつつ、Docker社自身でSwarmとかもやっているんですが。
平:Dockerは、バックエンドのオーバレイネットワークは抽象化が進んでいると思うんですが、フロントエンドからのアクセスが抽象化されていないんじゃないかと。
前佛:DockerがMachineとComposeを作ったのは、そのあたりだと思いますよ。PaaSのスケジューラーを作って、そのスケジューラーとComposeをくっつけて。どういったターゲットをどのノードに対して分散させるかというのは、これからだと思います。
松井:そのあたりはKubernetesが、Podの管理などで先行しているかなと思いながら見ています。
平:生のKubernetesだと、外からアクセスしづらくないですか?
松井:確かにそうですね。
平:Pod内は楽ですけど。そのあたりは、この座談会を機会に聞きたかった話です。
OpenShift v3の実装では、ルーターサービスがいて、Pod内のコンテナーのポートとFQDNのマッピングをして、裏のポートを管理してくれる。それを、ソフトウェアでやったり、F5のロードバランサーでやったりできるようになっているようです。そこで、Docker社の実装がどうかを知りたいと。
松井:元になったDotCloudのPaaSのシステムではあったと思うんですが、Dockerとして作りなおしたときに、コアだけDockerになったんだろうという気がします。
前佛:ネットワークの部分はいま、ぜんぜんなかったかもしれません。ほかの会社の実装をマージしようとしているようです。
松井:そうしたネットワークまわりやサービスディスカバリなど、けっこう難しくて、いままでの仮想マシンのかわりにそのまま使おうとすると難しい部分ですね。
Dockerを使いこなしているのはCTOが機能している会社
松井:思うのは、Dockerをやるには、インフラもアプリも両方わからないとできないんですよね。それに対してSIerは、インフラ部隊とアプリ部隊で分断されているんですね。インフラエンジニアだけでDockerをやろうとしても厳しそうですし、インフラの人もアプリの人も言いたいことがあるだろうし、誰かやればいいというものではないなあと。
平:そういう意味では、いまDockerを使いこなしている会社は、CTOが機能している会社だと思います。
(一同、なるほどという声)
横田:全体をデザインできないと使いこなせないということですね。
平:インフラもアプリもわかって、決断権もある人がいないと、入れない。
松井:アプリ開発者側から見て、Dockerコンテナーの中のOSさえ見たくないという気持ちはわかる。デプロイしたものが100個のコンテナーで動いていても別にいいじゃないか、うまく作られていれば、という。
一方インフラ側としては、無理でしょ、パフォーマンスが劣化したしたときに誰が責任とるのか、という気持ちがあって、難しいなと。
横田:インフラを見たくないという目的では、RDSのようなDBaaSや、S3のようなオブジェクトストレージがその考え方ですよね。Dockerもいずれ、同じようにサービス化されるんじゃないかと思います。
松井:そこは、各クラウドベンダーのコンテナーPaaSと、サービスとをうまく連係させるアーキテクチャが組めればアリなんじゃないかと思います。コンテナーの運用はベンダーさんがんばってね、と。
一方、SIerの運用の人は、なるべく固く保守的に、新しいことはなるべくやらない方針です。両者が分裂していると、うまくすりあわせられないという気がします
前佛:逆にアプリ開発側の話ですが、開発現場で使うという流れもあるんですね。私の知っている企業では、地方に何箇所か拠点があって、それまでバラバラに開発していました。そこでDockerを導入して、比較的共通した基盤を使えるようになりました。開発で完結する現場であれば、導入しやすいかもしれません。
上のレイヤーのソフトウェアは業界ごとに違ってくる?
さきほど話題に出ましたが、いまクラスターやオーケストレーションなど、Dockerの上のレイヤーのソフトウェアがいろいろ出てきています。どれに乗ったらいいんでしょうか?
松井:どれが勝つかまったくわかりません。
平:OpenShift v3はKubernetesベースですが、開発者数ではKubernetesが勝っているんじゃないかと。2015年7月にリリースされた1.0では、400人以上のコントリビューターがいて、やはり大きいんだなと思います。
松井:Mesosもいいと思いますが、もともとHadoopとか汎用的にオーケストレーションするためのツールなので、少し方向性がKubernetesと違う。
横田:Mesos自体は、クラスターを構成するツールなので。コンテナーをホスティングしたいといったことですと、MesosやMarathonあたりがいいかと思いますが、一般的にはKubernetesですかね。あとは、クラウドベンダーさんのコンテナー管理システムと。
平:OpenStack Magnumもありますね。モチはモチ屋で、オーケストレーションはオーケストレーションするツールにオフロードする抽象化レイヤーが必要になってくるんじゃないか。あ、それ、Docker Machineだよねということかもしれませんが(笑)
前佛:Docker Machineはまた少し違う感じですね。Docker Machineと、SwarmとComposeをくっつけないと、そっちに行かないような気がします。たぶん将来的にはKubernetesっぽいものを作りたいんだろうなという目的があって、いまはそこに向かってコンポーネントを作っている段階だと思います。だから、Docker社のものでうまくオーケストレーションできるかというと、ちょっと違う。
松井:Composeで作ったとしても、どこまでDockerfileで定義するのかという問題もありますね。全部Dockerであれば、Dockerfileで定義してComposeでばらまいてもいいんですけど。サービスがほかにもある場合、Dockerfileで本当にいいのかなと。たとえば、仮想マシン上で動くRDBMSもいっしょに管理するんだったら、ChefやAnsibleなどでプロビジョニングしたほうがいいんじゃないかなと。
前佛:そういう意味では、Rancherという会社が売っているもののがいいかもしれない。
松井:Rancherは、UIはカッコいいけど、大量に使えるかどうか、私はまだ試したことがないですね。
前佛:たぶん、数台レベルの管理では、まあまあ使えるんじゃないかと思います。とりあえずクラスターを組んでGUIを使って管理したいということであれば、いまのところ、一番とっつきやすいかもしれない。ただ、小さな会社が作っているので(笑)
平:いまのところ、銀の弾丸はないということですね
松井:Dockerを含めた全体を見て、何を管理しなくちゃいけないの、ということを考えなくちゃならない。
前佛:たぶん、業界に応じたスケジューラーが出てくるのではないかという気がします。
松井:9月に北海道で開かれた「Cloud Week 2015」では、みなさん、DockerとMesosでHPCという話が出ていましたね。
横田:HPCの世界でDockerがどんどん使われているのは、びっくりしますね。Flynnとか出てきて、マジかよとか(笑)
前佛:検証以外では、何かのツールを使いたいということではなく、やりたいことにあわせてツールをえらぶという原則に戻ってくる。そのいいきっかけになるかなと思います。
Docker社のトーンが変わってきた!?
Docker社のビジョンとしては、仮想化の次はDockerというものでしょうか。たとえば、すべて仮想化からDockerに、ということを目指しているのでしょうか。
前佛:実は、2015年6月のDockerConの前と後とで、風向きが変わったように思います。それまでは、「すべてDocker」「Dockerがすべてを解決する」と言ってたと思うんですが、DockerCon以降はそこがトーンダウンしている。すべてをDockerにすることはない、というように言いはじめている気がします。以前は個人や比較的小さな会社の開発環境をメインにしていたのが、夏以降はカバーリングがかわってきているのかなという感じも、個人的に受けています。
Docker社にいますごいお金や人が集まっていますよね。それを今後どう使うのでしょうか。
前佛:表に出ているところでは、ほかのベンダーさんとの連携ですね。MicrosoftやRed Hatなど、いろいろな会社と。あと、管理系のパートナーにお金を使っているようです。
最後に、一言ずつお願いします。
前佛:とりあえず使ってみましょう。○×表を作るよりは、まず使えばわかることがある。
平:コンテナー化する前に、アプリケーションの棚卸しをしましょう。
松井:使えるところから使いましょう。全部で使うのでも、まったく使えないというのでもなく。
横田:いろいろ使いどころはあります。早めに触ってみましょう。あと、Linux、クラウド、と来て、コンテナーが来るのではないか、と。
ありがとうございました。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- Dockerを理解するための8つの軸
- コンテナにもエンジンが必要! ―その代表格と言える「Docker」とは
- Dockerがオーケストレーション機能のSwarmモードを搭載した「Docker 1.12」を正式版に、ほか
- KubeCon報告からKubernetes対応版Dockerまで、Docker Meetup Tokyo #20開催
- コンテナ管理におけるベンダーの動向【テクノ・システム・リサーチ調べ】
- OpenStack Magnumとコンテナ
- KubernetesとMesos:Dockerのスケジューリングツールの違いを理解する
- Dockerオーケストレーションツールが一般提供、OpenShift Commons設立、ほか
- Dockerの誤解と神話。識者が語るDockerの使いどころとは? Docker座談会(前編)
- 米MSが「SQL Server on Linux」を発表、DockerがApache Aurora開発者らのチームを買収、ほか