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
95
完璧を求めない意思決定-アクセス制御基盤における制約との向き合い方
bmf_san
5
20k
AAPについて調べてみた
bmf_san
0
150
レーダーをつくる
bmf_san
0
88
契約テストとPactについて
bmf_san
0
130
5分でわかるSLO
bmf_san
2
190
権限について考える
bmf_san
2
190
自作HTTPルーターから新しいServeMuxへ
bmf_san
3
1.9k
古くなってしまったPHPフレームワークとPHPのバージョンアップ戦略
bmf_san
1
520
Other Decks in Programming
See All in Programming
Heart of Swift Concurrency
koher
0
960
そのリトライ、死んだコネクションを使い回していませんか ── GoのHTTPクライアントとHTTP/2を実プロダクト障害から学び直す
myus4a
0
220
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
560
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
240
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
1
510
Webの地図
yosuke_furukawa
PRO
6
4.7k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
0
140
AGENTS.md Is Not Enough:Build Skills, Don't Download Them
lx_t
0
130
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
440
変化を抱擁するドキュメントの作り方 - ビジネスルール駆動開発がもたらす、コードとの新しい関係
ioki
2
220
SONY CISC-NEWS NWS-1750 + NWB-225 フレームバッファの NetBSD/news68k ドライバ実装 / OSC2026Hiroshima
tsutsui
0
140
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
540
Featured
See All Featured
Everyday Curiosity
cassininazir
0
320
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
940
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
540
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
3
4.3k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Navigating Team Friction
lara
192
16k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
310
Amusing Abliteration
ianozsvald
1
310
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
580
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
500
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/
完