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
Dockerアプリケーションのポータビリティを考える #dockerjp
Search
Naoya Ito
April 11, 2014
Technology
10k
26
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Dockerアプリケーションのポータビリティを考える #dockerjp
Naoya Ito
April 11, 2014
More Decks by Naoya Ito
See All by Naoya Ito
Haskell を武器にして挑む競技プログラミング ─ 操作的思考から意味モデル思考へ
naoya
12
4.2k
Haskell でアルゴリズムを抽象化する / 関数型言語で競技プログラミング
naoya
21
7.8k
Functional TypeScript
naoya
18
6.8k
TypeScript 関数型スタイルでバックエンド開発のリアル
naoya
77
38k
シェルの履歴とイクンリメンタル検索を使う
naoya
16
6.7k
20230227-engineer-type-talk.pdf
naoya
91
86k
関数型プログラミングと型システムのメンタルモデル
naoya
63
110k
TypeScript による GraphQL バックエンド開発
naoya
29
37k
フロントエンドのパラダイムを参考にバックエンド開発を再考する / TypeScript による GraphQL バックエンド開発
naoya
67
25k
Other Decks in Technology
See All in Technology
AIの性能が向上しても未解決な組織の重大問題は何か?/An Unsolved Organizational Problem in the Age of AI
moriyuya
3
590
Reliability in the Age of AI: Engineering for AI Velocity
rrreeeyyy
0
120
EventBridge Connection
_kensh
5
680
SIer20年! 培ったスキルがスタートアップで輝く時
shucho0103
0
820
製造業のクラウド活用最適解〜AI,DXを加速するデータ基盤の作り方〜
hamadakoji
0
440
2026TECHFRESH畢業分享會 - Lightning Talk - 打造精準高效的 MCP 設計模式與測試實務
line_developers_tw
PRO
0
640
作って終わりにしない タイミーのセマンティックレイヤー育成の現在地
chanyou0311
3
2.1k
データ基盤をDataformで整えた話 〜 開発環境を添えて 〜
takapy
0
140
AI-DLCを活用した高品質・安全なAI駆動開発実践 / AI Driven Development with AI-DLC
yoshidashingo
0
160
2026 TECHFRESH 畢業分享會 - 開發日常大解密!從領域驅動到企業級上線
line_developers_tw
PRO
0
640
Rancherの紹介&Update情報(RancherJP Online Meetup #09)
yoshiyuki_kono
0
150
Snowflakeと仲良くなる第一歩
coco_se
4
380
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
200
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Skip the Path - Find Your Career Trail
mkilby
1
140
Heart Work Chapter 1 - Part 1
lfama
PRO
7
36k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
150
Ethics towards AI in product and experience design
skipperchong
2
310
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.5k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
340
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.9k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
Transcript
%PDLFSΞϓϦέʔγϣϯͷ ϙʔλϏϦςΟΛߟ͑Δ /BPZB*UP ,"*;&/QMBUGPSN*OD 4FOJPS5FDIOPMPHZ"EWJTPS %PDLFS.FFUVQ5PLZP
%PDLFSΞϓϦέʔγϣϯ Λϙʔλϒϧʹ͢Δɻ
̎ͭͷจ຺ %PDLFSίϯςφ͕ԼΛநԽ͢Δ %JTQPTBCMFͳ੍ʹΑΓΞϓϦέʔ γϣϯʹ࠶ݱՄೳੑ͕ཁٻ͞ΕΔ
#VJME0ODF 3VO "OZXIFSF
%PDLFSίϯςφ͕ԼΛநԽ • #VJME0ODF 3VO"OZXIFSF h"p://www.slideshare.net/dotCloud/docker-‐intro-‐november
ྫBUMBTTJBOKJSB
$ docker run atlassian/jira ͜Ε͚ͩͰɺΠϝʔδ͕ ެ։ϨϙδτϦ͔Β QVMM͞ΕͯίϯςφͰ +*3"͕ىಈ͢Δ
#VJME0ODF 3VO"OZXIFSF • BUMBTTJBOKJSB%PDLFS͑͞ಈ͍ͯΕ ɺͲ͜Ͱಈ͘ – -JOVY#PYɺCPPUEPDLFSɺ%JHJUBM 0DFBOɺ(PPHMF$PNQVUF&OHJOF • ϩʔΧϧͰಈ͍ͯͨͷΛɺΫϥυ 8FCΞϓϦέʔγϣϯ
ͷΛ%PDLFSϨϙ δτϦͰߦ͏ͷ͕ී௨ʹ ͳΔ͕དྷΔ
5IF'BDUPS"QQ
͏ҰͭͷϙʔλϏϦςΟ • %PDLFSͱ͍͏ΑΓ*NNVUBCMF *OGSBTUSVDUVSF༝དྷͷ • ࠶ݱՄೳͳΞϓϦέʔγϣϯ
*NNVUBCMF*OGSBTUSVDUVSF • %JTQPTBCMF$PNQPOFOUT • ෆมͳɺঢ়ଶΛ࣋ͨͳ͍ɺഇغՄೳͳ
ΞϓϦͷσϓϩΠઌΛ ίϯςφʹ͢Δ͜ͱΛߟ͑Δ • )FSPLV5SBWJT$*తͳ • ίϯςφͳͷͰɺΞϓϦέʔγϣϯ͕ຖ ഇغ͞Εͯ͠·͏ • Ώ͑ʹɺΞϓϦέʔγϣϯʹ࠶ݱੑ͕ ٻΊΒΕΔ
݁ՌతʹɺΞϓϦ͕ϙʔ λϒϧʹͳΔ
)FSPLV )FSPLVHJUQVTI͢Δຖɺ৽͍͠ڥ ίϯςφ Λ࡞Γɺݹ͍ڥΛغͯΔ
ΞϓϦΛ࠶ݱՄೳʹ͢Δʹ • εςʔτϨεͭ4IBSFE/PUIJOH • ࣮ߦ֎෦ڥΛ໌֬ԽɾநԽɾႈԽ – #VOEMFS – 3BDL – 'PSFNBO ίϯςφ͕ཁٻ͢ΔΠϯλ ϑΣʔεʹΑͬͯɺΞϓϦ
έʔγϣϯʹྑ੍͍Λ՝ ͢͜ͱ͕Ͱ͖Δ
5IF5XFMFWF'BDUPS"QQ h"p://twelve-‐factor-‐ja.herokuapp.com/ (オリジナル: h"p://12factor.net/)
%PDLFSͰͲ͏͖͔͢ • 'BDUPS"QQతͳͷ͕ྑ͍Πϯλ ϑΣʔεͳͷΘ͔ͬͨ • ͡Ό͋ɺͦΜͳίϯςφΛ%PDLFSͰͲ ͏༻ҙ͖͔͢ – ࡞ͬͯΈͨ
OBPZBEPDLFSQBBTFYBNQMF • HJUIVCDPNOBPZBEPDLFSQBBT FYBNQMF • HJUQVTIΛܖػʹ%PDLFSίϯςφΛ ࡞ΓΞϓϦέʔγϣϯΛඋ͠ಈ͔͢ – CPPUEPDLFSɺHJUIPPLT QVMMSFRVFTUຖʹΞϓϦ έʔγϣϯΛ্ཱͪ͛ͯ
63-ΛׂΓͯΔɺΈ͍ͨ ͳ͜ͱΛࢹʹೖΕͯΔ
4JOBUSBΞϓϦέʔγϣϯ ΛHJUQVTI͢Δͱ %PDLFSίϯςφ͕ىಈ͠ɺ ͦͷ্Ͱಈ͘
࣌ؒ͋ͬͨΒσϞ
ͬͯΈͨ͜ͱ • લఏ3VCZ 4JOBUSBͳ8FCΞϓϦ • ࣮ߦڥ SVCZ΄͔ ͷϏϧυ ඞཁόʔδϣϯͷSVCZCVOEMFSͳͲΛ
༧ΊೖΕͨ%PDLFSΠϝʔδΛ࡞͓ͬͯ͘ ํࣜ )FSPLVͷCVJMEQBDLͰΦϯσϚϯυʹ Ϗϧυ͢Δํࣜ • %PLLVΈ͍ͨͳ σϞͬͨͷͷ΄͏
#VJMEQBDL • ΞϓϦέʔγϣϯͷ࣮ߦڥΛϏϧυ͢ ΔͨΊͷεΫϦϓτύοέʔδ – ΠϯλϑΣʔε͕ඪ४Խ͞ΕͯΔ • CJOEFUFDUŋŋŋରΞϓϦͷݴޠͳͲΛఆ • CJODPNQJMFŋŋŋ࣮ߦʹඞཁͳڥΛϏϧυ –
ྫSVCZͷϏϧυɺCVOEMFJOTUBMMFUD • CJOSFMFBTFŋŋŋΞϓϦέʔγϣϯ࣮ߦίϚϯυ ͷܾఆ – IFSPLVIFSPLVCVJMEQBDLSVCZ IFSPLVIFSPLV CVJMEQBDLOPEFKT NJZBHBXBIFSPLVCVJMEQBDL QFSMͦΕͧΕʹͭͷεΫϦϓτ͕ೖͬͯΔ
1. アプリ を git push 2. post-‐update hoook で
docker run 3. コンテナ起動 4. アプリを git clone (※cloneじゃなくpushにしたい)
ΞϓϦͷHJUDMPOFޙ • EPDLFSSVOͰΞϓϦέʔγϣϯίʔυ ʹରͯ͠CVJMEQBDLΛద༻ – CJOEFUFDUͰఆ͠USVF͕ฦͬͨΒɺͦ ͷCVJMEQBDLͷCJODPNQJMFͰϏϧυ – CJOSFMFBTFͰܾఆ͞Ε࣮ͨߦίϚϯυΛ FYFD
SVCZͷϏϧυͳͲΦϯ σϚϯυͰ
ͬͯΈͯࢥͬͨ͜ͱ
CVJMEQBDLΛ͏ͱŋŋŋ • ॊೈɻΞϓϦέʔγϣϯͷ࣮ߦڥΛޙ ͔ΒಈతʹܾఆͰ͖Δ – ΑͬͯɺݴޠͷछྨYόʔδϣϯ͝ͱʹڥ Λ࡞͓ͬͯ͘ŋŋŋͱ͔ඞཁͳ͍
ͰɺͪΐͬͱͯΑ • %PDLFSΠϝʔδ࡞ͬͯίϯςφىಈ͢ Δͷ؆୯͡ΌΜ – CVJMEQBDLํࣜॊೈ͚ͩͲɺͦͷॊೈੑ ཁΔ – SVCZ༻ΠϝʔδɺOPEFKT༻Λ࡞͓͍ͬͯͯɺ
ಈ͔͢ͷʹ߹ΘͤͯΠϝʔδΛબͯ͠ SVO͢Δํ͕ࣜ୯७ָͭͩͬͨ
Ωϡʔ˓ʔΫοΩϯάํࣜ • ʮ͜͜ͰSVCZ CVOEMFS͕ඞཁ ʹͳΓ·͕͢ŋŋŋ͋Β͔͡Ί࡞͓͖ͬͯ· ͨ͠ʯ %PDLFSͳΒ࡞Γஔ͖؆୯ɻ %PDLFSϨϙδτϦͰڞ༗ 0,
ΞΠσΞ ·ͩ • CVJMEQBDLతͳ%PDLFSJNBHFT – CVJMEQBDLͷEFUFDUͰڥΛఆ͠ – ͦͷڥʹదͨ͠อଘࡁΈίϯςφΛબ͠ – CVJMEQBDLͷSFMFBTFͷΑ͏ʹͦͷίϯς φʹܾΊΒΕͨૢ࡞Λ࣮ߦͤ͞Δ CVJMEQBDLͰϏϧυͨ͠
ίϯςφΛDPNNJUͯ͠ ࠶ར༻ɺͱ͔Ͱ͍͍͔
ͯͳΘ͚Ͱɺ·ͱΊ • %PDLFSΞϓϦέʔγϣϯͷϙʔλϏϦ ςΟΛߴΊΔ – ͭ#VJME0ODF 3VO"OZXIFSFͷ – ͏ͭ5IF'BDUPS"QQͳ • ޙऀͰɺίϯςφΛͲ͏༻ҙ͖͔͢ – Ωϡʔ˓ʔΫοΩϯάํࣜͰׂͱΑ͍
એ • ,"*;&/1MBUGPSN*ODΤϯδχΞื ूͯ͠·͢ • ΠϯϑϥࣗಈԽɺ*NNVUBCMFɺ%PDLFS ͱ͔͍͖͍ͬͯͨํɺ͓ͪͯ͠·͢