読者です 読者をやめる 読者になる 読者になる

meta-something

論文とか研究とか趣味のネタとか

ゆるふわなDockerの使い方(Docker布教)

Speaker Deck

speakerdeck.com

なにこれ

研究室でDockerの使い方を布教したときのスライドです。 ゆるふわに「とりあえずどんな感じで使えるのかわかればいいや」という感じの内容です。

なんでそんなことを

  • 個人が使う場合でも便利なツールだから
    • 研究領域のアプリケーション配布にもDockerがもっと普及して欲しい
  • 自身の研究を話すときの理解の助けになる
    • 味方を増やしたいのと、人に説明する練習として
  • 東工大が2017年夏に稼働を予定するスパコンがコンテナ型仮想化を前提にするらしい(?)ので、コンテナ型仮想化について知っておいて損はない

個人的な参考資料とか

www.slideshare.net

www.slideshare.net

論文紹介『An Updated Performance Comparison of Virtual Machines and Linux Containers』

タイトル

An Updated Performance Comparison of Virtual Machines and Linux Containers

著者

Wes Felter ♰ , Alexandre Ferreira ♰ , Ram Rajamony ♰ and Juan Rubio ♰
IBM Research Division, Austin Research Laboratory

発表媒体

  • IBM Research Report, RC25482 (AUS1407-001), 2014.
  • IEEE International Symposium on Performance Analysis of Systems and Software, pp.171-172, 2015.

概要

Linux Container (Docker)と Virtual Machine (KVM)を比較対象に CPU, メモリ, ネットワークI/O, ファイル I/O の性能をベンチマークや DB を利用した模擬アプリ等を利用して計測した論文. 設定に依存するが Docker は KVM と同等またはそれ以上で,実環境に近い性能を示している.

スライド(英語)

speakerdeck.com

その他、日本語の紹介文献

blog.yuuk.io speakerdeck.com

『プログラマのためのDocker教科書』感想

数か月前からちまちまDockerを調べては触ってきたのだけれど、そろそろ情報がまとまった書籍を元に知識を整理したくなったので読んでみた。

本書は、Linuxのコンテナ仮想化ツールであるDockerを使って、コードでインフラ環境を構築するための入門書です。開発環境や実行環境などインフラ構築「自動化」の経験がない開発者を対象に、おさえておきたいシステム基盤&インフラの基礎知識に加えて、Dockerによるインフラ構築と管理の方法をやさしく解説します。理解しにくいネットワークや仮想技術などのインフラの基礎概念を図解しながら、開発/実行環境を実際に構築することで、構成管理ツールを使ったインフラ構築の流れを解説していきます。

目次は以下の通り。

  1. おさえておきたいシステム/インフラの知識
  2. コンテナ仮想化技術とDocker
  3. Dockerのインストールと基本コマンド
  4. Dockerfileを使ったコードによるサーバ構築
  5. Dockerイメージの共有─Docker Registry
  6. 複数コンテナの一元管理─Docker Compose
  7. マルチホスト環境でのDocker運用─Docker Machine、Docker Swarm
  8. クラウドでのDocker運用

コンテナ型仮想化技術の難しい&細かい技術の記述は控えめに、インフラの基礎知識を簡単に前置きしたあと、実行環境の仮想化を実現するために「Dcokerをどう使えるか」がまとめてある。「Dockerで何ができて、何が嬉しいのか?」を知りたい入門者向けにはとても良い内容であり、特に1~4章はインフラの基礎知識とDockerの用例が実際のコマンドレベルで書かれているので、社内研修の教科書とかに使えるのでは?という印象を受ける。細かい内容はQiitaとか公式ドキュメントとか個人ブログを見ればもっと詳しく記述されている記事があるけれど、やはり全部まとめて書かれた書籍があることは大事。個人的に身内でDocker利用を布教したいと考えていたので、他人への紹介や参考書としても重宝しそう。

ただし、Docker周辺技術はあまりにも変化が早いので、既に一部記述が最新ではない部分があったりなかったり。本書は初版が2015年11月19日と約1年前なのだけれど、7,8章で触れられているクラスタ管理技術であるDocker Swarmについては、2016年6月末にDocker Engineと統合されてDocker Swarm Modeとしてより簡単にネットワークやサービスの構築が利用できるようになっている。

docs.docker.com

qiita.com

その部分は本書ではおまけのような扱いなので、あまり気にする必要はない(クラスタ管理するような人は、たぶん自分で調べられるだろうし)。特に前半~中盤のコアなDockerコマンド周辺はそうそう変化があるものではないだろう。 総じて、Dockerという技術を利用したいが何処から手を付ければよいのか…という人向けの教科書として良書である。

Docker-Sharif-Judge

DockerでSherif-Judgeを構築する記事をQiitaに書いて、あとGitHubで公開しておきました。

github.com

qiita.com

SC16 メモ

ソルトレイクシティで開催されたSC16に参加してきました。めっちゃ楽しかったです。 ただ、初SCで事前知識がなく、現地についてからも混乱していたため、備忘録的にメモを残しておく。(セッション内容はまた別に)

SC16の概要

  • 期間:2016年11月12日(土)~18日(金)
  • 場所:アメリカ合衆国ソルトレイクシティ
  • SCはSupercomputing Conferenceの略。西暦の下2桁で開催年を示す(2016年=SC16)
  • 全プログラムはこちら
  • HPC分野のお祭り(ボス談)で、色んなイベントが詰め込まれている
    • Exhibit
    • Paper
    • Workshop
    • Panel (Birds of Feather)
    • Tutorial
    • その他色々…
  • HPC分野で有名なTOP500, GREEN500, GRAPH500などが発表される
  • HPC分野で有名なゴードンベル賞の発表もここで
  • 参加費が結構する(参加形式によってかなり違う)
  • 休憩時間にフルーツとか飲み物が会場においてある
  • 参加形式によって様々なレセプションが催される

イベントの形式毎の概略

  • Exhibit
    • 企業とか大学機関が様々な展示(ポスターとかラックとか実演とか講演とか商談とか。なんでもあり)
  • Paper
    • SC16で口頭発表があり、論文はThe International Conference for High Performance Computing, Networking, Storage, and Analysis採録される
    • 概要の締切が3月頃、査読を通ると11月頃にSCで口頭発表?
  • Workshop
    • 把握しきれない種類のワークショップ(ストレージとかネットワークとかバイオ応用とか)
  • Panel
    • パネルディスカッション的なもの。(会場から結構質問がびゅんびゅん飛ぶ)
  • Tutorials
  • その他

その他

  • 参加権利がTutorialsとWorkshopとExhibitとその他セッションで違う。(勘違いしていた)参加ページの説明はしっかり読もう

備忘録「Googleが数千台もある10年前のLinuxディストリをライブアップグレードした話」

ラボの計算機がちょろっと古いLinuxOSで「dockerを入れようにもまずカーネルアップグレードの必要があって、そもそもOSのアップグレードは何処で断ち切れていて、じゃあ何処のノードなら依存関係なくて安全で…」という問題の根本原因を調査していたとき、以前Twitterのタイムラインで「Googleが数千台もある10年前のLinuxディストリをライブアップグレードした話」みたいなツイートを見かけたことを思い出した。
で、元ツイートは見つからなかったけれど、元論文を引用していると思われるはてなブログを見つけた。

blog.yuuk.io

元論文はこれ

MERLIN, M. Live Upgrading Thousands of Servers from an Ancient Red Hat Distribution to 10 Year Newer Debian Based One. In Proceedings of the 27th conference on Large Installation System Administration (LISA) (2013), pp. 105–114

web公開のPDF原稿

Live Upgrading Thousands of Servers from an Ancient Red Hat Distribution to 10 Year Newer Debian Based One | USENIX

書いた本人のスライドっぽいもの

http://marc.merlins.org/linux/talks/ProdNG-LC2013-JP/html/


紹介した記事が本当に詳細に説明してくれているので、ここでは述べない。ざっくり概要は

  • GoogleでもRedHat7.1に独自パッチを重ねて10年間運用していて
  • root領域の変更がアプリケーションに影響しないようにやり繰りしていたが流石に負の遺産が限界になり
  • DebianベースのProdNGという新しいディストリビューションに移行するときの作業

なのだけれど

Googleの本番Linuxカーネルデバイスドライバ、ユーザスペース、アプリケーションの3レイヤで管理されている。 カーネルデバイスドライバディストリビューションからは切り離されていて、頻繁に更新される。 このレイヤは別のチームがメンテナンスしており、今回の話には関係がない。

kernel更新はまた別のチームと書いてある。 原文では

Google’s production Linux OS is managed in three layers. The kernel and device drivers, user-space, and the running applications. The kernel and device drivers are updated frequently and separately from the operating system. These files are maintained, fleet-wide, by a different team. Aside from obvious touch points, this maintenance is unrelated to the work described in this paper.

kernelのライブアップグレードって普通ミッションクリティカルとかの分野ではどうやっているんだろう…?

Docker + MPIとかHPCとか

調べてたら2012年頃からIBM内部の公開議論板?みたいなのが引っかかったりしてた。