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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Ryo Tomidokoro
June 15, 2018
Programming
11
5.4k
コンテナを雰囲気で動かさない話
PHPカンファレンス福岡2018前夜祭リジェクトコン
Ryo Tomidokoro
June 15, 2018
Tweet
Share
More Decks by Ryo Tomidokoro
See All by Ryo Tomidokoro
開発者が知っておきたい複雑さの正体/where-the-complexity-comes-from
hanhan1978
8
3.4k
Spec Driven Development入門/spec_driven_development_for_learners
hanhan1978
2
1.6k
フロントエンドがTypeScriptなら、バックエンドはPHPでもいいじゃない/php-is-not-bad
hanhan1978
8
14k
どうすると生き残れないのか/how-not-to-survive
hanhan1978
17
14k
100分で本番デプロイ!Laravelで作るWebアプリケーション作成/100min_web_app_cicd
hanhan1978
1
250
PHPerのための計算量入門/Complexity101 for PHPer
hanhan1978
8
3.5k
集中して作業する技術/how_to_work_deeply
hanhan1978
65
55k
PHPでデータベースを作ってみた/create-data-with-php
hanhan1978
11
11k
ADRを一年運用してみた/adr_after_a_year
hanhan1978
8
4.8k
Other Decks in Programming
See All in Programming
Unity6.3 AudioUpdate
cova8bitdots
0
110
AI時代のソフトウェア開発でも「人が仕様を書く」から始めよう-医療IT現場での実践とこれから
koukimiura
0
140
go directiveを最新にしすぎないで欲しい話──あるいは、Go 1.26からgo mod initで作られるgo directiveの値が変わる話 / Go 1.26 リリースパーティ
arthur1
2
500
今更考える「単一責任原則」 / Thinking about the Single Responsibility Principle
tooppoo
3
1.6k
メタプログラミングで実現する「コードを仕様にする」仕組み/nikkei-tech-talk43
nikkei_engineer_recruiting
0
160
Go 1.26でのsliceのメモリアロケーション最適化 / Go 1.26 リリースパーティ #go126party
mazrean
1
360
ふつうの Rubyist、ちいさなデバイス、大きな一年
bash0c7
0
710
エンジニアの「手元の自動化」を加速するn8n 2026.02.27
symy2co
0
110
AIコーディングの理想と現実 2026 | AI Coding: Expectations vs. Reality 2026
tomohisa
0
1.2k
モジュラモノリスにおける境界をGoのinternalパッケージで守る
magavel
0
3.5k
Rで始めるML・LLM活用入門
wakamatsu_takumu
0
170
Rails Girls Tokyo 18th GMO Pepabo Sponsor Talk
yutokyokutyo
0
210
Featured
See All Featured
Building AI with AI
inesmontani
PRO
1
770
Amusing Abliteration
ianozsvald
0
120
RailsConf 2023
tenderlove
30
1.4k
The Curious Case for Waylosing
cassininazir
0
260
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
230
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.4k
Optimizing for Happiness
mojombo
378
71k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
130
30 Presentation Tips
portentint
PRO
1
250
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
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
Ҏ্ɺ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ