Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
コンテナ完全に理解した
Search
bmf_san
January 16, 2019
Programming
1.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
コンテナ完全に理解した
bmf_san
January 16, 2019
More Decks by bmf_san
See All by bmf_san
桃太郎で始めるRego入門‐今日から使えるRegoの基本編
bmf_san
0
110
完璧を求めない意思決定-アクセス制御基盤における制約との向き合い方
bmf_san
5
20k
AAPについて調べてみた
bmf_san
0
160
レーダーをつくる
bmf_san
0
97
契約テストとPactについて
bmf_san
0
140
5分でわかるSLO
bmf_san
2
190
権限について考える
bmf_san
2
190
自作HTTPルーターから新しいServeMuxへ
bmf_san
3
1.9k
古くなってしまったPHPフレームワークとPHPのバージョンアップ戦略
bmf_san
1
530
Other Decks in Programming
See All in Programming
Domain-Driven Transformation
hschwentner
2
2.3k
SalesForceを内製化!? ~ HR事業を支える顧客管理基盤のインフラを大公開 ~
oku053
0
170
カツオ、ご期待ください
suneo3476
0
190
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
490
Event is what happens
moro
2
730
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
260
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
5
5k
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
0
370
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
210
當我們開始不讀 Code - AI Agent 時代,Code Review 與 Clean Code 還剩下什麼?
jame2408
1
160
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
Simple Storage Service(S3) is not simple
iwatsukayura
0
290
Featured
See All Featured
Evolving SEO for Evolving Search Engines
ryanjones
0
330
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Color Theory Basics | Prateek | Gurzu
gurzu
1
490
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Tell your own story through comics
letsgokoyo
1
1.1k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
YesSQL, Process and Tooling at Scale
rocio
174
15k
KATA
mclloyd
PRO
35
16k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Paper Plane
katiecoart
PRO
5
54k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Transcript
コンテナ完全に理解した @Makuake LT Party 2019/1/16
「完全に理解した」 製品を利⽤をするためのチュートリアルを完了できたという意味。 「なにもわからない」 製品が本質的に抱える問題に直⾯するほど熟知が進んだという意味。 「チョットデキル」 同じ製品を⾃分でも1から作れるという意味。または開発者本⼈。 cf. https://twitter.com/ito_yusaku/status/ 1042604780718157824 Excuse
話すこと ・コンテナとは ・コンテナの歴史 ・コンテナと仮想化の違い ・コンテナ技術の実現 ・libcontainer
コンテナとは ・ホストOSからアプリケーションとランタイムをま とめて、分離した⼀連のプロセス ・Dockerはコンテナを管理する技術
Docker is Not コンテナ
コンテナの歴史 6/*904ʹDISPPU͕ొ 'SFF#4%KBJMT͕'SFF#4%ʹొɻDISPPUͷൃలܥɻ -9$͕ϦϦʔεɻ-JOVYͷίϯςφٕज़ɻ %PDLFS͕ొɻίϯςφΛཧ͢Δٕज़ɻ 7JSUVP[PPɺ0QFO7;ɺ)169DPOUBJOFSɺ4PMBSJT$POUBJOFS
ͳͲίϯςφٕज़ଞʹ৭ʑ͋Δɻ
コンテナと仮想化の違い ・コンテナ(コンテナ型仮想化) ・ホストOSからアプリケーションとランタイムをまとめて、分離し た⼀連のプロセス ・ホストOSのカーネルの部分を共有している ・OSのライブラリ部分はコンテナ側が選択可能 ・仮想化 ・ざっくりいうと、ホストOS上にゲストOSをまるごと⽤意する仕組 み
【図解】コンテナと仮想化の違い ϋʔυΣΞ ϋʔυΣΞ ϗετ04 ԾԽιϑτΣΞ ήετ04 ήετ04 ϗετ04 ίϯςφཧιϑτΣΞ ήετ04
ϥΠϒϥϦ ήετ04 ϥΠϒϥϦ ϛυϧΣΞ ϛυϧΣΞ ΞϓϦέʔγϣϯ ϛυϧΣΞ ϛυϧΣΞ ΞϓϦέʔγϣϯ ΞϓϦέʔγϣϯ ΞϓϦέʔγϣϯ ίϯςφ ԾԽʢϗετܕʣ ίϯςφ
コンテナと仮想化の違い わかりやすい cf. https://community.hpe.com/t5/Enterprise-Topics/ Docker%E3%82%B3%E3%83%B3%E3%83%86%E3 %83%8A%E3%81%A8%E4%BB%AE%E6%83%B3%E 5%8C%96%E3%81%AE%E9%81%95%E3%81%84%E 3%81%A8%E3%81%AF- Synergy%E3%81%A8DevOps/ba-p/6980068? profile.language=ja#.XD6Zks8zZTY
コンテナ技術の実現 ・Kernel namespaces ・Appramor and SELinux profiles ・Seccomp policies ・Chroot
・Kernel capabilities ・CGroups
Kernel namespaces ・プロセスを6種類のシステムリソースに分割する機 能 ・ipc, uts, mount, pid, network, user
・分離されたリソース同⼠は互いに⼲渉できない ・ユーザーがユーザー専⽤の分離されたリソースを 持っているように⾒える仕組みを実現
Appramor and SELinux profiles ・アプリケーションとかファイルとかカーネルとかのアクセス制 御機能 ・Apparmor ・Linux Security Modulesの1種
・アプリケーションのアクセス権限をセキュアに管理 ・SELinux ・Linuxカーネルに強制アクセス制御機能を加えるモジュール
Seccomp policies ・プロセスのシステムコール発⾏を制限する機能
Chroot ・親プロセスと⼦プロセス群に対して、ルートディレ クトリを変更する ・ルートを変更されたプロセスは範囲外のファイルに アクセスできなくなる ・→プロセス分離の実現
Kernel capabilities ・プロセスの権限管理 ・rootなのか、root以外なのかよりももっと細かい権 限管理ができる
Cgroups ・プロセスをグループ化して共通管理する
コンテナ技術の実現 ・Linuxカーネルのこれらの機能を駆使して実現され ている ・これらの機能を駆使してコンテナ技術をLinuxで使 えるようにしたやつがlxc
Dockerのコンテナ技術 ・以前はlxc、v0.9からlibcontainer ・cf. https://blog.docker.com/2014/03/ docker-0-9-introducing-execution-drivers-and- libcontainer/
Libcontainer is 何 ・コンテナ利⽤のためのGoで実装されたランタイム ・元はdockerのリポジトリにあった(cf. https://github.com/docker/libcontainer) ・runC (cf. https://github.com/opencontainers/runc) ・コンテナランタイムのリファレンス実装プロジェクト
・OCI(Open Container Initiative)が管理 ・Docker社が⽴ち上げたコンテナ標準仕様を策定する団体 ・gVisorもコンテナランタイム ・コンテナランタイムをもっと知る ・cf. https://www.ianlewis.org/en/container-runtimes-part-1-introduction-container-r
Libcontainerを触ってみる ・「Goならわかるシステムプログラミング」の最後 の章にのってるよ!
まとめ ・コンテナは隔離されたプロセス ・コンテナはホストOSのカーネル部分を共有、ライブ ラリ部分は⾃由に選択できる ・Linuxカーネルを読む機運が⾼まった(読むとはいっ てない) ・libcontainerは触ったり、コード読んだらgoの勉強に もなりそう、楽しそう(⼩並感)
余談 Cookpadのスプリングインターンにコンテナコース というのがあった https://internship.cookpad.com/2019/spring/
完