Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
コンテナを雰囲気で動かさない話
Search
Ryo Tomidokoro
June 15, 2018
Programming
5.4k
11
Share
コンテナを雰囲気で動かさない話
PHPカンファレンス福岡2018前夜祭リジェクトコン
Ryo Tomidokoro
June 15, 2018
More Decks by Ryo Tomidokoro
See All by Ryo Tomidokoro
あるアーキテクチャ決定と その結果/architecture-decision-and-its-result
hanhan1978
2
920
開発者が知っておきたい複雑さの正体/where-the-complexity-comes-from
hanhan1978
8
3.6k
Spec Driven Development入門/spec_driven_development_for_learners
hanhan1978
2
1.9k
フロントエンドがTypeScriptなら、バックエンドはPHPでもいいじゃない/php-is-not-bad
hanhan1978
8
14k
どうすると生き残れないのか/how-not-to-survive
hanhan1978
17
15k
100分で本番デプロイ!Laravelで作るWebアプリケーション作成/100min_web_app_cicd
hanhan1978
1
270
PHPerのための計算量入門/Complexity101 for PHPer
hanhan1978
8
3.7k
集中して作業する技術/how_to_work_deeply
hanhan1978
65
57k
PHPでデータベースを作ってみた/create-data-with-php
hanhan1978
11
11k
Other Decks in Programming
See All in Programming
AI駆動開発勉強会 広島支部 第一回勉強会 AI駆動開発概要とワークショップ
hayatoshimiu
0
400
Oxcを導入して開発体験が向上した話
yug1224
4
220
Sans tests, vos agents ne sont pas fiables
nabondance
0
160
Stage 3 Decorators でできること / できないこと / TSKaigi 2026
susisu
1
1.2k
Swiftのレキシカルスコープ管理
kntkymt
0
200
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
200
Lemonade + Foundry Toolkit でお手軽アプリ開発
seosoft
1
200
CSC307 Lecture 17
javiergs
PRO
0
250
AI時代だからこそ「Bloc」を採用する価値があるのかもしれない
takuroabe
0
250
サーバーレスで作る、動画データ管理基盤
oyasumipants
0
290
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
1.2k
TypeScriptだけでAIエージェントを作る フロント・エージェント・インフラのフルスタック実践
har1101
6
1.1k
Featured
See All Featured
エンジニアに許された特別な時間の終わり
watany
107
240k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
200
The SEO Collaboration Effect
kristinabergwall1
1
460
Code Reviewing Like a Champion
maltzj
528
40k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.4k
Site-Speed That Sticks
csswizardry
13
1.2k
New Earth Scene 8
popppiees
3
2.3k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.2k
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
Navigating Weather and Climate Data
rabernat
0
200
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
150
Transcript
ίϯςφΛงғؾͰಈ͔͞ͳ͍ 1)1ΧϯϑΝϨϯεԬલࡇϦδΣΫτίϯ *OOPWBUPS+BQBO*OD ॴ྄ &OHJOFFS
ͬͦ͘͞Ͱ͕͢
ίϯςφΛงғؾͰͬͯ·ͤΜ͔ʁ
DockerΛͬͨ։ൃ ίϯςφͷৄࡉΒͳͯ͘ग़དྷΔ
ڥߏங docker-compose.yml
docker-compose up -d ։ൃڥߏங͕Ұॠ…
docker-compose down ࠔͬͨΒ্ཱͪ͛͠ docker-compose up -d
͜ͷ··ͰΞϗʹͳΔʂ ຊΛಡΜͰίϯςφʹೖͩ
ίϯςφԾԽɺαʔόʔԾԽͰͳ͍ɻ Α͋͘Δίϯςφೖॻͷಋೖ෦
ผʹαʔόʔԾԽͷ͜ͱʹৄ͘͠ͳΓ͍ͨΘ ͚Ͱͳ͍ͷ͕ͩ…
ίϯςφͱΧʔωϧͷఏڙ͢ΔػೳʹΑͬͯ ࣮ߦڥ͕͞ΕͨͦΕͧΕͷϢʔβۭؒͷ ͜ͱͰ͋Δɻ -> ͜͏͍͏આ໌͚ͩͩͱϐϯͱ͜ͳ͍ Α͋͘Δίϯςφೖॻͷಋೖ෦
݁ہɺίϯςφ͕Α͔͘Βͳ͍
ਅ໘ͳ શһ͕ৄࡉΛ͠Βͳͯ͘ଟ͍͍ நతʹѻ͑ΔͳΒͦΕ͍͍
ͰɺࢲΓ͍ͨ Ͳ͏ͳ͍ͬͯΔͷ͔ཧղ͍ͨ͠
ͦ͜ͰࣗͳΓʹௐͨ
chroot 1979 ~ unshare 2.14~ nsenter 2.6.24~ cgroups 2.6.24~ ԶௐʹΑΔίϯςφͷਖ਼ମ
※LinuxͷίϚϯυͰ͢ɻ
Ҏ্Ͱ͢… ͱ͍͏ͷڐ͞Εͳ͍ͱࢥ͏ͷͰɻ ྫΛަ͑ͯɺͳΔ͘ฏқʹઆ໌͠·͢ɻ
ྫ͑ɺ `alpine linux` ίϯςφ tarͷதʢൈਮ)
ͯ͞ɺ͜Ε͕Ͳ͏ͬͯಈ͘ͷ͔ʁ
chroot ͍͖ͳΓίϯςφ
ͨͩ͠ɺ͜Ε͚ͩͩͱ͕ෆे ↑ϗετͷϓϩηεΛpkillͰ͖ͪΌ͏
unshare namespaceΛ࡞ͯ͠ɺϓϩηεΛ
cgroups /sys/fs/cgroupԼͰઃఆΛݟΕΔ ϓϩηεάϧʔϓͷϦιʔεར༻Λִɾ੍ݶ
unshare͞ΕͨϓϩηεʹೖΕΔ `name space enter` `docker exec` ͱ͔ʹΘΕ͍ͯΔͱࢥ͏ nsenter
ίϯςφΛ࣮ݱ͢Δ4ίϚϯυ جຊ chroot ϓϩηεΛ unshare Ͱ ϦιʔεΛ cgroup Ͱ nsenter
Ͱͨ͠ϓϩηεʹ৵ೖ
جຊ chroot Linux͔ΒɺLinuxͰ࣮ߦՄೳͳϑΝΠϧΛ࣮ߦ
྆ํLinux͔ͩΒ࣮ߦͰ͖Δ LinuxΧʔωϧͷABI Application Binary Interface ݫ֨ͳޙํޓੑ
Ұݟ alpinelinux ͕ԾOSͷΑ͏ʹݟ͑Δ ࣮ଶϓϩηε࣮ߦ
ɹchrootdocker ࣮ߦ࣌ʹɺඞͣίϚϯυΛࢦఆ docker run -it alpine:latest sh ͦ͏͍͏͜ͱͩͬͨͷ͔…
ίϯςφग़ͨͯͷ͜Ζ ୡਓ͕͓ͨͪͬ͠Όͬͯ·ͨ͠ɻ ʮίϯςφͬͯ chrootͩΑͶʯͱ Α͏͘…ҙຯΛཧղͰ͖·ͨ͠
͔͠͠ɺผͷ͕༙͍ٙͯ͘Δ
Docker For Mac ʁ Docker For Windows ? MacɺWindowsLinux͡Όͳ͍
ͳΜͰ Dockerಈ͘ͷʁ
Docker for Mac Windowsͷ߹ಉ༷ LinuxKitͱ͍͏ίϯςφ༻Linux্Ͱಈ࡞
ྫ͑ MacͷClangͰ HelloWorldͷ࣮ߦϑΝΠϧΛ࡞ Linuxίϯςφ্Ͱ࣮ߦ -> ಈ͔ͳ͍ɻ Linux͡Όͳ͍͔Βɻ
UbuntuͰ HelloWorldͷ࣮ߦϑΝΠϧΛ࡞ DockerͰ࣮ߦ -> ಈ͘
Linux -> Linuxͷ࣮ߦՄೳϑΝΠϧ -> ಈ͘ Linux -> OSXͷ࣮ߦՄೳϑΝΠϧ -> ಈ͔ͳ͍
ཧ۶୯७
LXCͱ͔LibContainerͱ͔runCͱ͔ Containerdͱ͔৭ʑมΘ͍ͬͯͬͯΔ͕ جຊมΘΒͳ͍ɻ
͜͜·ͰΛཧղ͢Ε DockerͰಈ࡞͢Δ Windowsίϯςφ͕ແ͍ཧ༝ OSXίϯςφ͕ແ͍ཧ༝ શʹ͔Γ·͢ΑͶʁ
ίϯςφ Linux ͔Β Linuxͷ࣮ߦՄೳϑΝΠϧΛಈ͔ٕ͢ज़͔ͩΒ
͕࣌ؒ༨ͬͯͨΒDEMO
Ҏ্ɺ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ