moby project (may 25, 2017, tokyo)

23
Copyright©2017 NTT Corp. All Rights Reserved. NTT ソフトウェアイノベーションセンタ 須田 瑛大 (Akihiro Suda) DockerCon 2017 Recap Meetup 2017.5.25

Upload: akihirosuda

Post on 21-Jan-2018

588 views

Category:

Software


3 download

TRANSCRIPT

Page 1: Moby Project (May 25, 2017, Tokyo)

Copyright©2017 NTT Corp. All Rights Reserved.

NTT ソフトウェアイノベーションセンタ須田 瑛大 (Akihiro Suda)

DockerCon 2017 Recap Meetup2017.5.25

Page 2: Moby Project (May 25, 2017, Tokyo)

2Copyright©2017 NTT Corp. All Rights Reserved.

•須田 瑛大 (Akihiro Suda)

• GitHub: @AkihiroSuda

• Twitter: @_AkihiroSuda_

• NTT ソフトウェアイノベーションセンタ

• Docker コアメンテナ (2016.11~2017.04)

• Moby コアメンテナ (2017.04~)

• OSS「プロジェクト」としてのDockerはMobyに名前が変わった

•最近はcontainerdやOCI関連でも活動

自己紹介

Page 3: Moby Project (May 25, 2017, Tokyo)

3Copyright©2017 NTT Corp. All Rights Reserved.

•Mobyとは何か

•Mobyのインパクト

•Buildkit構想

•ありがちな誤解

•デモ

お話しする内容

だいたい4/27のmeetupでお話した内容ですが..

NEW

Page 4: Moby Project (May 25, 2017, Tokyo)

4Copyright©2017 NTT Corp. All Rights Reserved.

Mobyとは何か

"the most important project at Dockersince the launch of Docker itself"

Page 5: Moby Project (May 25, 2017, Tokyo)

5Copyright©2017 NTT Corp. All Rights Reserved.

Moby is a project which provides a “Lego set” of dozens of components

(https://mobyproject.org)

Mobyとは何か

画像: Docker本社(San Francisco)にて撮影 (須田・Kunal)

Page 6: Moby Project (May 25, 2017, Tokyo)

6Copyright©2017 NTT Corp. All Rights Reserved.

• Docker daemonが複数の「Lego」的なMobyコンポーネントに(今後徐々に)分割される

• Mobyコンポーネントを自由に組み合わせて,独自のプロジェクトを開発できる

• Docker製品も,Mobyコンポーネントから構成される

Mobyとは何か

containerd + runc

Moby

"swarmd"

"layerd"

REST API

任意..

Docker CLI

Docker(for Mac, Win, AWS...)

3rdパーティプロジェクト

Page 7: Moby Project (May 25, 2017, Tokyo)

7Copyright©2017 NTT Corp. All Rights Reserved.

「Moby」という単語が色々な意味で使われていて,わかりにくい

• Docker daemonを構成する「Lego」ブロック群

•「Lego」を組み合わせるツール (コマンド名moby)• Dockerと全然関係ないプロジェクトを構築することもできる

• LinuxKitのコードネーム• DockerConにて発表された,コンテナ専用Linux distro

• Docker for Mac/Win/AWS..のOS (Moby Linux)

• Dockerの鯨 (Moby Dock)

Mobyとは何か

Page 8: Moby Project (May 25, 2017, Tokyo)

8Copyright©2017 NTT Corp. All Rights Reserved.

MobyでDockerをビルドする

kernel:image: "linuxkit/kernel:4.9.x"

onboot:- name: formatimage: "linuxkit/format"

- name: mountimage: "linuxkit/mount"

services:- name: dhcpcdimage: "linuxkit/dhcpcd"

- name: ntpdimage: "linuxkit/openntpd"

- name: dockerimage: "linuxkit/docker-ce"

outputs:- format: kernel+initrd

$ moby build docker.yml..Create outputs:

docker-bzImagedocker-initrd.img

$ linuxkit run qemu docker..Welcome to LinuxKit/#

docker サービスは,今後徐々に"swarmd"など細かいコンポーネントに分割されていく見込み

(任意のコンポーネントだけ選んでビルドできる)

Docker自体も含めて,全てのパッケージがcontainerdコンテナ

Page 9: Moby Project (May 25, 2017, Tokyo)

9Copyright©2017 NTT Corp. All Rights Reserved.

Docker以外のプロジェクトにも使える

https://www.slideshare.net/Docker/dockercon-2017-general-session-day-1-solomon-hykes-75362520

mobyを使って,redisコンテナ入りのVMを作成(redisコンテナはdocker抜きで直接containerd上で動作)

Page 10: Moby Project (May 25, 2017, Tokyo)

10Copyright©2017 NTT Corp. All Rights Reserved.

Docker以外のプロジェクトにも使える

https://www.slideshare.net/Docker/dockercon-2017-general-session-day-1-solomon-hykes-75362520

mobyを使って,k8sコンテナ入りのVMを作成

Page 11: Moby Project (May 25, 2017, Tokyo)

11Copyright©2017 NTT Corp. All Rights Reserved.

•Mobyとは何か

•Mobyのインパクト

•Buildkit構想

•ありがちな誤解

•デモ

お話しする内容

Page 12: Moby Project (May 25, 2017, Tokyo)

12Copyright©2017 NTT Corp. All Rights Reserved.

•製品としてのDockerの名前がMobyに変わったわけではない

• GitHubのdockerリポジトリは,確かにmobyになった

• Dockerの実行コマンドは,従来通り"docker"

• "moby"コマンドは全く別の用途 (コンポーネントを組み合わせるための"assembler")

• "moby"コマンドは開発者向けツールであり,ユーザが実行するものではない

• Dockerfileも,従来通り"Dockerfile"

• "Mobyfile"にはならない

ユーザへの直接的な影響は(ほぼ)無い

Page 13: Moby Project (May 25, 2017, Tokyo)

13Copyright©2017 NTT Corp. All Rights Reserved.

ただし,APIはRESTからgRPCに変わる見込み(REST互換レイヤも提供される)

今後追加される新機能は,新API経由で利用するのが良さそう

詳細は未だ議論中 https://forums.mobyproject.org /t/proposal-engine-v1-rest-api-transition/49

ユーザへの直接的な影響は(ほぼ)無い

クライアント

dockerd

REST

gRPC デマルチプレクサ

containerd swarmd ...d

クライアント

互換レイヤ

REST

gRPC

gRPC

gRPC gRPC gRPC

旧 新

移行

Page 14: Moby Project (May 25, 2017, Tokyo)

14Copyright©2017 NTT Corp. All Rights Reserved.

•「product」と「project」との境界が明確になった

• Moby部分については,ガバナンスの透明性向上が期待される

•一方,CLIについては,Docker社が単独で主導することとなった

• ソースコードは従来通りApache License 2.0で公開(https://github.com/docker/cli)

Mobyのインパクト

開発主体 透明性 商用導入向き 例

「product」 単独企業 × ○DockerRHEL

「project」 コミュニティ ○ ×MobyFedora

Page 15: Moby Project (May 25, 2017, Tokyo)

15Copyright©2017 NTT Corp. All Rights Reserved.

•Mobyとは何か

•Mobyのインパクト

•Buildkit構想

•ありがちな誤解

•デモ

お話しする内容

Page 16: Moby Project (May 25, 2017, Tokyo)

16Copyright©2017 NTT Corp. All Rights Reserved.

•Docker daemonを「Lego」ブロックに分割する作業は,まだ始まっていない

•docker build 相当部分が,比較的早期に分割されそう

⇒Buildkit構想 (DockerCon後に発表)

•まだ構想段階https://github.com/moby/moby/issues/32925

• 注: https://buildkit.io/ は関係ない

Buildkit構想

Page 17: Moby Project (May 25, 2017, Tokyo)

17Copyright©2017 NTT Corp. All Rights Reserved.

• low-levelなフォーマットとして「LLB」が提供される• 人間が直接触るものではない (LLVM IRと同じ)

• LLBの命令間の依存性は,DAG(有向非巡回グラフ)として表現される⇒並行性やキャッシュを考慮したスケジューリングが可能

• 従来のDockerfileは,LLBに変換されて実行される

• 今後,Dockerfile以外の上位言語も出てくるかもしれない?

Buildkit構想

Dockerfile

3rd パーティ新言語

LLB DAG変換

最終イメージ

依存物(並行ビルド可)

Page 18: Moby Project (May 25, 2017, Tokyo)

18Copyright©2017 NTT Corp. All Rights Reserved.

今のところDockerfile一強だが..

低位ランタイム

rktrunc• いずれもOCI ランタイム 仕様に準拠.CoreOS社は独自のappc仕様を推進していたが,現在はOCIに合流.• rktはruncよりやや上位のレイヤも兼ねる (イメージ関連など)

中位ランタイム

containerd

CRI-containerdCRI-O rktlet

• いずれもk8sのCRI(Container Runtime Interface)に準拠.ただしcontainerd自体はCRI非対応で,CRI-containerdを別途要する.• いずれもOCI (Open Containers Initiative) イメージ仕様に準拠.

高位ランタイム・オーケストレータ

Docker(Moby)

Kubernetes

イメージ記述言語

Dockerfile

• CoreOS社が推進するacbuildなどの競合もいくつかあるが,現時点では有力とは言いがたい

ほぼ空白 (今後変化する?)

Page 19: Moby Project (May 25, 2017, Tokyo)

19Copyright©2017 NTT Corp. All Rights Reserved.

•Mobyとは何か

•Mobyのインパクト

•Buildkit構想

•ありがちな誤解

•デモ

お話しする内容

Page 20: Moby Project (May 25, 2017, Tokyo)

20Copyright©2017 NTT Corp. All Rights Reserved.

×Dockerの製品名がMobyになった

×docker コマンドの代わりに moby コマンドを使う世

界が来る

×Dockerfileの代わりにMobyfileを書く世界が来る

×docker-compose.ymlの代わりにMobyのYAMLを書

く世界が来る

×Dockerはlinuxkitでしか動かなくなった

×Dockerはクローズドソースになった

ありがちな誤解

Page 21: Moby Project (May 25, 2017, Tokyo)

21Copyright©2017 NTT Corp. All Rights Reserved.

•Mobyとは何か

•Mobyのインパクト

•Buildkit構想

•ありがちな誤解

•デモ

お話しする内容

Page 22: Moby Project (May 25, 2017, Tokyo)

22Copyright©2017 NTT Corp. All Rights Reserved.

※今後のバージョンで,YAMLやコマンドの仕様は変更される可能性が高い

デモ

$ moby build docker.yml..Create outputs:

docker-kerneldocker-initrd.img

$ linuxkit run docker..Welcome to LinuxKit/# runc list/# runc exec docker docker version

Page 23: Moby Project (May 25, 2017, Tokyo)

23Copyright©2017 NTT Corp. All Rights Reserved.

•Dockerは今後,Legoブロックの如く,Mobyコンポーネントを組み合わせてビルドされる

•GitHubのdockerリポジトリはmobyリポジトリになったが,製品名やコマンド名が変わったわけではない

•DockerがRHELだとすると,MobyはFedoraのようなもの

まとめ