Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
runC概要と使い方	
NTT	SIC	大嶋 悠司
誰	
大嶋 悠司	
所属:NTT	SIC	
昔:機械学習・ロボットなど	
今:BGPソフトウェア実装 Docker		
	
GoBGP:	h4ps://github.com/osrg/gobgp	
Dockerのネットワークプラグイン作ったり	...
コンテナって最近めっちゃ聞くな	
マジか	
そういやCFでもコンテナ使ってたような...
CFでのコンテナ...	
h4p://www.slideshare.net/i_yudai/warden	
NTT Software Innovation Center
求められるもの
App環境の隔離
リソース制限の導⼊
操作⽤API
201...
runC?	
h4ps://www.cloudfoundry.org/garden-and-runc/	
CFのバックエンドがrunCになるらしい!	
・・・runCって何?	
  ↓こいつと何が違うの?
コンテナの系譜	
chroot	
1983	
FreeeBSD	
Jail	
2000	
LXC	
2008	
docker	
2013
ソ	
ラ	
リ	
ス	
コ	
ン	
テ	
ナ	
は	
!?	
レ	
イ	
ヤ	
合	
っ	
て	
る	
!?	
warden入ってないとか!!	
とにかく古くからあるんや!!
Dockerの登場	
何が新しかったのか	
	実行環境をDockerイメージとして管理できる	
	コンテナはそのイメージのデプロイ方法
Dockerがないと	
コンテナはリソースを隔離する技術	
実行環境の構築を手動で行う必要がある
Dockerの周辺事情	
DockerとはことなるコンテナランタイムRockertを発表	
•  常駐デーモンを持たず	
•  イメージ等の仕様を公開(App	Container	Image)	
CoreOSがDockerと喧嘩	
•  セキュ...
OCIの発足・runCの誕生	
Docker社がコンテナの標準仕様を議論・策定する団体を立ちあげ	
仕様のリファレンス実装として	
runC	
を公開
ちなみに...
OCIの方針	
1.  Standard	operaYons	
2.  Content-agnosYc	
3.  Infrastructure-agnosYc	
4.  Designed	for	automaYon	
5.  Industria...
コンテナのイメージとランタイム	
コンテナランタイム	
コンテナイメージ
DockerとrunCの技術的関係	
libcontainer	
libnetwork	 libkv	
イメージ	
管理	
(DistribuYon)	
libcontainer	
ベンダリング	
Docker	 runC	
議論・開発
だからrunCでは	
libcontainer	
展開	
実行!!	
Dockerイメージ	
これがCFが謳う	
DockerImage対応の意味
だからrunCでは	
libcontainer	
展開	
実行!!	
Dockerイメージ	
これがCFが謳う	
DockerImage対応の意味	
↑	
このイメージどうやって
作るの?	
Docker?
じゃ,runC使ってみよう!	
٩( 'ω' )‫و‬
Requirement:	
	Go言語がコンパイルできる	
	
$	go	get	github.com/opencontainers/runc	
$	cd	$GOPATH/src/gith...
Dockerイメージの実行	
Requirement:	
	dockerがインストールされてる	
	
$	docker	run	ubuntu:14.04	
$	docker	ps	-a	
	CONTAINER	ID		IMAGE								...
もうちょっと使う...	
$	docker	run	-itd	ubuntu:14.04	
$	docker	ps		
	CONTAINER	ID		IMAGE														・・・ NAMES	
	58269d5f04f6		ubu...
runC、外に出る	
$	ping	8.8.8.8	
	
	
	
	
	
ping:	icmp	open	socket:	OperaYon	not	permi4ed
続・runC、外に出る	
runCは細かくパーミッションを指定可能	
デフォルトではほとんど何もできない	
	
	
	
	
$ping	8.8.8.8	
	PING	8.8.8.8	(8.8.8.8)	56(84)	bytes	of	data....
まとめ	
•  runCはコンテナランタイム	
•  イメージ管理は他所で	
•  runCだけではできることは少ないがコンテナ
ランタイムとしては十分
Prochain SlideShare
Chargement dans…5
×

runC概要と使い方

3 124 vues

Publié le

PaaS勉強会#31の発表資料です.

Publié dans : Technologie
  • Soyez le premier à commenter

runC概要と使い方

  1. 1. runC概要と使い方 NTT SIC 大嶋 悠司
  2. 2. 誰 大嶋 悠司 所属:NTT SIC 昔:機械学習・ロボットなど 今:BGPソフトウェア実装 Docker GoBGP: h4ps://github.com/osrg/gobgp Dockerのネットワークプラグイン作ったり h4ps://github.com/gopher-net/ipvlan-docker-plugin
  3. 3. コンテナって最近めっちゃ聞くな マジか そういやCFでもコンテナ使ってたような...
  4. 4. CFでのコンテナ... h4p://www.slideshare.net/i_yudai/warden NTT Software Innovation Center 求められるもの App環境の隔離 リソース制限の導⼊ 操作⽤API 2012-07-26 7 DEAホスト App App App ⼀⽅通⾏ 制限 アプリの隔離に利用されてます
  5. 5. runC? h4ps://www.cloudfoundry.org/garden-and-runc/ CFのバックエンドがrunCになるらしい! ・・・runCって何?   ↓こいつと何が違うの?
  6. 6. コンテナの系譜 chroot 1983 FreeeBSD Jail 2000 LXC 2008 docker 2013
  7. 7. ソ ラ リ ス コ ン テ ナ は !? レ イ ヤ 合 っ て る !? warden入ってないとか!! とにかく古くからあるんや!!
  8. 8. Dockerの登場 何が新しかったのか 実行環境をDockerイメージとして管理できる コンテナはそのイメージのデプロイ方法
  9. 9. Dockerがないと コンテナはリソースを隔離する技術 実行環境の構築を手動で行う必要がある
  10. 10. Dockerの周辺事情 DockerとはことなるコンテナランタイムRockertを発表 •  常駐デーモンを持たず •  イメージ等の仕様を公開(App Container Image) CoreOSがDockerと喧嘩 •  セキュリティ(rootデーモン常駐・docker pull) •  イメージの仕様が不明 •  Docker社の方針
  11. 11. OCIの発足・runCの誕生 Docker社がコンテナの標準仕様を議論・策定する団体を立ちあげ 仕様のリファレンス実装として runC を公開
  12. 12. ちなみに...
  13. 13. OCIの方針 1.  Standard operaYons 2.  Content-agnosYc 3.  Infrastructure-agnosYc 4.  Designed for automaYon 5.  Industrial-grade delivery イメージの標準化はまだだったり... 2016/2/10時点 h4ps://github.com/opencontainers/specs/pull/293
  14. 14. コンテナのイメージとランタイム コンテナランタイム コンテナイメージ
  15. 15. DockerとrunCの技術的関係 libcontainer libnetwork libkv イメージ 管理 (DistribuYon) libcontainer ベンダリング Docker runC 議論・開発
  16. 16. だからrunCでは libcontainer 展開 実行!! Dockerイメージ これがCFが謳う DockerImage対応の意味
  17. 17. だからrunCでは libcontainer 展開 実行!! Dockerイメージ これがCFが謳う DockerImage対応の意味 ↑ このイメージどうやって 作るの? Docker?
  18. 18. じゃ,runC使ってみよう! ٩( 'ω' )‫و‬ Requirement: Go言語がコンパイルできる $ go get github.com/opencontainers/runc $ cd $GOPATH/src/github.com/opencontainers/runc $ make $ sudo make install $ runc -v 以上!!
  19. 19. Dockerイメージの実行 Requirement: dockerがインストールされてる $ docker run ubuntu:14.04 $ docker ps -a CONTAINER ID IMAGE ・・・ NAMES 265050cd7358 ubuntu:14.04 ・・・ high_leavi4 $ docker export high_leavi4 > ubuntu1404.tar $ mkdir runctest $ mkdir runctest/roofs $ sudo tar -xvf ubuntu1404.tar -C runctest/roofs $ cd runctest $ runc spec $ sudo runc start ubuntu
  20. 20. もうちょっと使う... $ docker run -itd ubuntu:14.04 $ docker ps CONTAINER ID IMAGE ・・・ NAMES 58269d5f04f6 ubuntu:14.04 ・・・ stoic_colden $ docker inspect -f "{{ .NetworkSeings.SandboxID }}" stoic_colden $ vim config.json $ sudo runc start ubuntu で”namespace”のnetwork以下に “path”: ” /var/run/docker/netns/{inspectの結果12文字}” を追加 のはじめ12文字に一致する名前のファイルが /var/run/docker/netns にあることを確認
  21. 21. runC、外に出る $ ping 8.8.8.8 ping: icmp open socket: OperaYon not permi4ed
  22. 22. 続・runC、外に出る runCは細かくパーミッションを指定可能 デフォルトではほとんど何もできない $ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 4l=53 Yme=1.57 ms “capabiliYes”に”CAP_NET_RAW”を追加 ついでに“args”を”bash”に
  23. 23. まとめ •  runCはコンテナランタイム •  イメージ管理は他所で •  runCだけではできることは少ないがコンテナ ランタイムとしては十分

×