Docker Meetup Tokyo #20 参加レポート #DockerTokyo

2017.12.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。サービスグループの武田です。

今回、Docker Meetup Tokyo #20に参加してきましたので、その参加レポートになります。

またはじめての参加レポートのため、暖かい目で見てもらえるとうれしいです。

会場はSpeeeさんの4Fでした。オシャレな会場です。

ちなみに、六本木一丁目駅の方面から行ったのですが、迷宮感が半端なかったです。

そんな心情を察してか、暖かいコーヒーとクッキーが用意されていました。数量限定ということでしたので、さっそく美味しくいただきました。

また会場にはWi-Fiも用意されており、快適な環境でした。

本日のセッション

  • KubernetesでGPUクラスタを管理したい
    • 大嶋悠司さん
  • KubeCon/CNCon recap
    • Takuya Noguchiさん
  • Kubernetes対応版 Docker
    • 須田瑛大さん
  • Moby Project
    • Kunal Kushwahaさん

LT枠

  • Kubernetesは機械学習の夢を見るか
    • Yoh Osakiさん
  • 2017 Kubecon cncon recap ver1
    • Yutaka Ichikawaさん
  • Shiva
    • 両角和軌さん
  • docker + git submodule使ったら便利だった話
    • 木村勇太さん
  • 弊社Docker環境の紹介
    • 冨山長彦さん

KubernetesでGPUクラスタを管理したい

Kubernetesを使ってGPUクラスタを管理する方法を試してみたという発表でした。

GPUマネジメントのドキュメントは読めば分かるので、読んでやってみた。マニフェストファイルのvolumesにnvidia-375を指定すればよい(って書いてある!)。

動かないよ!!

ndivia-dockerなら簡単に動いていた。なぜ動いていたかというと、Dockerを起動するときに 謎の力 でライブラリを集めて勝手にマウントしてくれていたから。

対応として、自力で謎の力を行使することに。具体的にはnv-dockerをインストールして、手動でライブラリを集めてマウントした。

動いた!!

ただ、動いただけで不満点もあるので、もっとかっこよくしたい。方法としては次の3つ。

  • k8s + docker + nvidia-docker2(nv-docker)
    • 安心のDockerを使える
  • k8s + cri-containerd + nvidia-container-runtime(nv-runtime)
    • KubernetesがDockerに依存したくないということで開発された
    • Dockerがインストールされていなくても使える
  • GKE
    • 3つ目の方法はセッションの最後に紹介されました

今までのnvidia-dockerは単なるDockerのラッパだった(nvidia-dockerコマンドを使用していた)。nvidia-docker2はOCIランタイムスペックに準拠したGPUを利用するためのコンテナランタイム(dockerコマンドで動く)。

https://github.com/NVIDIA/nvidia-container-runtime

1つ目と2つ目は、やりたいことはできたが、あまりかっこよくない。3つ目のGKEだとかっこよくできそうなので、ぜひ試してみて!

発表は以上でした。

KubeCon/CNCon recap

KubeConに参加してきたのでその報告を発表されていました。

  • KubeCon + CloudNativeCon NourthAmerica 2017
    • 今年で5回目
    • 会期 Dec 6-8、実際は Dec 4-8
    • 前回と比べて4倍(4100+、日本から40人くらい)
    • 半年でスポンサー数が2.5倍(100+)
    • セッションの応募が倍率10倍
  • Cloud Native Landscape cncf/landscape 1.0 released
    • GitHubにイラレの画像が急にアップされたりした

https://github.com/cncf/landscape/blob/master/landscape/CloudNativeLandscape_latest.jpg

ただ、この画像は見づらいとの声が多かったので、Webでインタラクティブに見れるように鋭意製作中とのこと。

海外ではmeetup.comがメジャー。コミュニティのメンバーは48000人くらいの規模となっているが、このうち日本は0人(0/48000)なため、なんとかしたい。

KSCPというものがあり、Kubernetes ecosystemを形成している。今40くらいのサービスプロバイダがある。

来年は上海も開催決定で、NAやEuropeもある。

  • トレンド
    • Service Mesh
    • Security
    • Serverless

多くの会社が参加して盛り上がっていた。満席のセッションも多かったのでこれから中心になっていくのでは。

  • Proposals for CNCF Project
    • Istio
    • Rook
    • SPIFFE
    • Vitess
    • NATS
  • Security
    • Notary
    • The Update Framework
  • Serverless
    • CNCF WG-Serverless Whitepaper
    • 現在もレビューが続いている
    • GitHubで公開されている

実際のセッションはYouTubeに上がっている。

Cloud Native Computing Foundation - CNCF - YouTube - YouTube

Cloud Native Computingが一気に盛り上がりを見せてきた。 (一社ではなく)コミュニティベースの高い成長率、エコシステムの拡大が要因ではないか。次回も参加したい。

発表は以上でした。

Kubernetes対応版 Docker

本日β版が公開されたばかりの、Kubernetes対応版 Dockerの発表でした。

  • 従来はKubernetesがDockerを管理していたが、これが逆転していく
  • DockerがKubernetesを管理する

現在は、使うためには登録が必要。また今のところ、Docker for Macのみの提供となっている。

https://www.docker.com/Kubernetes

インストール後、設定画面で「Enable Kubernetes」にチェックを入れると、使えるようになる。

  • docker cliがdockerdを経由せずに、直接Kubernetesと通信する
  • Custom Resource Definitionとしてstackを定義している(docker-compose.ymlをデプロイするイメージ?)
    • kubectl get stackで取得できる
  • stackが単位のため、docker serviceは使えない
  • docker runはKubernetesを使わずローカルで実行される
    • あくまでcomposeを通して使う
  • 現在はプロプライエタリなのでソースは見れない
docker stack deploy --compose-file docker-compose.yml mystack
docker stack ls

実際はDockerではなくKubernetesで動いている。

各コンテナがランダムな文字列を返して、表示しているデモ。

発表は以上でした。

Moby Project

全編通訳なしの英語でした。あまり聞き取れませんでした、すみません。。

内容としては、Dockerconf2017で発表された、Moby Projectについての発表でした。

Moby ProjectのStory。

  • コンテナ革命の始まり
  • またたく間に、世界中に広がった
  • すばらしいプロダクトがスタートしていった
  • 思想がコンフリクトして、それぞれのコミュニティができあがった
  • 車輪の再発明をせずにレゴのようにシステムを組み立てるフレームワークとして作られた

MobyのBuilding Blocks。

  • runC
    • 低レベルのコンテナランタイム
    • OCIスペックに準拠したコンテナの起動や実行するCLIツールを作成できる
      • libcontainerのラッパ
      • rootfs と config.json が必要
    • go-runc
      • GoによるrunC実装
  • containerd
    • 高レベルコンテナランタイム
      • Simplicity
      • Robustness
      • Portability
  • LinuxKit
    • minimalでimmutableなディストリビューションをビルドできる
    • Inputとしてyamlファイルを用意するだけでいろいろなプラットフォームのイメージが作成できる
      • Kernel
      • Init
      • Onboot
      • Services

デモコード:https://goo.gl/RiKKBS

質問の人も英語でやりとりしてました。質問内容も回答も聞き取れず。。

→ Twitterで解説してくれていました https://twitter.com/htj_fusion/status/941273677726748672

発表は以上でした。

LT:Kubernetesは機械学習の夢を見るか

仕事では機械学習などのソリューションを提供している。

Linux上にPostgreSQLやRuby on Rails、CoreLogicなどの依存パッケージをインストールするのが面倒だった。

→ 面倒なのでコンテナ化を進めた。

実際の提供ソリューションは、複数の製品を組み合わせる必要がある。docker-composeでやる方法もあるが、もっと柔軟にしたいということで、Kubernetesでやることに。

  • minikube
    • ローカルにKubernetesのクラスタを作れる
    • VM上に作るので簡単
    • 1 Nodeのクラスタという制約はある
      • スケールする必要があまりない(スケールしたい時はGKEなどを選べばよい)

機械学習のアプリケーションはマイクロサービス化しやすい。

※ 左右キーでページ送りできます。

LT:2017 KubeCon & CNCon Recap

12月6日〜8日でKubeCon開催してました。

  • 約4000人(前年度は2000人程度)
  • スポンサーは151社
  • ハイライト
    • "OK Google, Create k8s Clusters" でGKE上にクラスタ作るデモが衝撃
  • サービスメッシュ
    • Make microservices easyer
    • Data for Everyone
    • Make workload easy

LT:Shiva

オフィスにGPUマシンがあって、サクッとJupyterコンテナを作れるサービスを作っている。JupyterのダッシュボードにWeb上からアクセスできる。

  • ユーザーごとにDockerコンテナを作成
  • 機械学習系のライブラリやCUDAはすでにセットアップ済み
  • ダッシュボードからAPI経由でいろいろ操作
  • 裏ではceph
  • Jupyterプロジェクトでtmpnbを公開しており、それをカスタマイズしている
  • MESOSとMarathon
    • Kubernetesはオーバースペック過ぎる
  • Nextremer Advent Calendar 2017 - Qiitaも見てね!

LT:docker + git submodule使ったら便利だった話

  • API BをプロキシするだけのAPI Aの開発
  • API Bは別チームが作っているのでテストがたいへん
  • 両方をDockerで環境構築できるようにした
  • submoduleの下にAPI Bを入れてしまう、それをDockerで動かす
  • 実コードでテストできたので便利だった

  • 課題

  • APIが増えたら、依存関係がたいへんそう
  • container作る部分がCircle CIのテスト時間が長くなりがち

誰か教えて!

LT:弊社Docker環境の紹介

  • テスト環境
    • minikubeが便利だった
  • nvidia-docker + nnabla
    • リポジトリにコマンドとか全部載っているので簡単
  • 監視
    • Mackerelが便利
    • プラグインにDockerオプション入れるだけ

本日のスポンサー

社内の評価と社外の評価をニアリイコールにすることで、エンジニアとしての評価が高められるよ、というお話でした。

まとめ

Docker Meetup初参加でしたが、いろいろと興味を持って聞くことができました。

全体的にKubernetesや機械学習のトピックが多かった印象です、またminikubeもちょっと気になったので触ってみようと思いました。

また参加できる機会があれば、参加していきたいです。

もう年末ですね。みなさん体調にはお気をつけください。ではでは。