ちゅらデータ社内 LT
σʔλੳͱ Docker2018.08.24 ͪΎΒσʔλࣾ LT@hoto17296
View Slide
എܠ• ࣾͷ GPU Ϛγϯ͕ Docker ͱ͍͏Կ͔Ͱ ಈ͍͍ͯΔΒ͍͕͠ͿͬͪΌ͚Α͘Θ͔Βͳ͍• ΧΤϧͷਓ͕ͨΒŪƄŕŜŖŪƄŕŜŖݴͬͯΔ
Yuki Ishikawa• @hoto17296• ΧΤϧͷਓͰ͢• ઌिϕϏʔ࢈·Ε·ͨ͠
࠷ۙ Qiita ʹॻ͍ͨهࣄDockerDockerDockerDockerDocker͍͍ͩͨ Docker
ࠓͷςʔϚŪƄŕŜŖ͓͡͞Μ͕ڭ͑ΔŪƄŕŜŖ
͢͜ͱ• Docker ֓ཁ• ʮίϯςφʯͱʮΠϝʔδʯ• ࣾ GPU αʔόͲ͏ಈ͍͍ͯΔ͔
͞ͳ͍͜ͱ• Dockerfile ͰͷΠϝʔδͷ࡞Γํ• ίϯςφϨδετϦ• Volume ͱ Network• Docker Compose• ΦʔέετϨʔγϣϯ
Docker ֓ཁ
Docker ͷಛ (1/2)• ίϯςφܕͷԾԽ• ϗετͱΧʔωϧΛڞ༗• Linux Ͱ͔͠ಈ͔ͳ͍ (※)• ͍※ Windows, macOS ͷ Docker Linux VM ͷ্Ͱಈ͍͍ͯΔ
Docker ͷಛ (2/2)• ϙʔλϒϧ• ϗετϚγϯʹґଘ͠ͳ͍ͷͰͲ͜Ͱಈ͘• ϩʔΧϧͰ࡞ͬͨΠϝʔδΛͦͷ··ຊ൪ڥʹσϓϩΠ• ؆୯ʹίϯςφΛ࡞ͬͯյͤΔ• ڥߏஙͷίετ͕͔͔Βͳ͍• (αʔϏε։ൃ) ॊೈͳσϓϩΠϑϩʔ͕ΊΔ• (σʔλੳ) ࣮ݧڥΛ͖ͳ͚ͩ࡞ͬͯյͤΔ
ͱΓ֮͋͑ͣ͑ͯ΄͍͜͠ͱ• ʮΠϝʔδʯͱʮίϯςφʯ• Πϝʔδɿ ࣮ߦͰ͖ΔϑΝΠϧ (ͷΑ͏ͳͷ)• ίϯςφɿ ࣮ߦதͷϓϩηε (ͷΑ͏ͳͷ)• Docker ʹ͍ͭͯߟ͑Δͱ͖ɺ Πϝʔδͷͳͷ͔ίϯςφͷͳͷ͔ Λҙࣝͨ͠΄͏͕͍͍
Πϝʔδ 1ίϯςφruncommitΠϝʔδ 2ʮΠϝʔδ 1ʯ͔ΒίϯςφΛ࡞࣮ͯ͠ߦ͢ΔίϯςφʹมߋΛՃ͑Δ(ϞδϡʔϧΛΠϯετʔϧ͢Δ)มߋΛՃ͑ͨίϯςφΛʮΠϝʔδ 2ʯͱ͍͏໊લͰอଘ͢Δ※ ࣮ࡍʹΠϝʔδΛ࡞Δࡍʹ commit Λ࣮ߦ͢Δ͜ͱͳ͘ɺ ɹΘΓʹ Dockerfile Λهड़͢Δͷ͕ͩɺͦΕʹ͍ͭͯࠓճׂѪ
Πϝʔδͷछྨ• ެࣜΠϝʔδ• DockerHub Ͱެ։͞Ε͍ͯΔ• Ubuntu ͱ͔ Ruby ͱ͔ MySQL ͱ͔• ඇެࣜΠϝʔδ• ୭͔͕࡞ͬͨΠϝʔδ• DockerHub ͦͷଞͷϨδετϦ• ϓϥΠϕʔτͳΠϝʔδ• ࣗͰϏϧυͨ͠Πϝʔδ
ΠϝʔδมߋࠩͷੵΈॏͶubuntu:16.04php:7scratchwordpress:4Ubuntu ΛΠϯετʔϧPHP ΛΠϯετʔϧWordPress ΛΠϯετʔϧ↑ ΠϝʔδΛ͏ (ίϯςφΛ࡞Δ) ਓϨΠϠΛҙࣝ͢Δඞཁͳ͍ʮΑ͘Θ͔ΒΜ͚Ͳ WordPress ͕ಈ͘Πϝʔδʯͱͯ͑͠Δ
ίϯςφͷมߋอଘ͞Εͳ͍• ίϯςφΛফͨ͠Βมߋશ෦ফ͑Δ• มߋΛӬଓԽ͍ͨ͠߹• commit ͯ͠৽͍͠ΠϝʔδΛ࡞Δ• σʔλΛӬଓԽ͍ͨ͠߹ (ϩάͱ͔DBͱ͔)• ϘϦϡʔϜΛϚϯτ͢Δ
ศརͳࣄྫɿ GitLab (1/2)• (ࣾ GitLab Docker Ͱಈ͍ͯΔ)• ैདྷͷ GitLab Πϯετʔϧํ๏• Ruby, Node, Nginx, PostgreSQL, Redis, Sidekiq, GitLab ຊମ ΛΠϯετʔϧ• ͦΕͧΕΛదʹಈ࡞͢ΔΑ͏ʹઃఆ• ͭΒ͍
ศརͳࣄྫɿ GitLab (2/2)• Docker Λͬͨ GitLab Πϯετʔϧํ๏• GitLab ެࣜΠϝʔδΛ pull ͯ͘͠Δ• σʔλΛอଘ͢ΔͨΊͷϘϦϡʔϜΛ༻ҙ• ίϯςφΛىಈ͢Δ• ؆୯ !!!• ʮΑ͘Θ͔ΒΜ͚Ͳ GitLab ͕ಈ͘Πϝʔδʯ ͕͑Δ → ϙʔλϏϦςΟ
ࣾ GPU αʔόʹ͍ͭͯ
Docker Ͱ৭ʑಈ͍͍ͯΔ• μογϡϘʔυ (80)• TensorFlow Notebook (18888)• DataScience Notebook (28888)• PySpark Notebook (38888)• PostgreSQL (5432)
(࠶) ίϯςφͷมߋอଘ͞Εͳ͍• ίϯςφΛফͨ͠Βมߋશ෦ফ͑Δ• ՃͰϞδϡʔϧΛΠϯετʔϧͯ͠ αʔόΛ࠶ىಈͨ͠Βશ෦ফ͑Δ• ॳظઃఆεΫϦϓτ༻ҙ͍ͯͩ͘͠͞• ͨͩ͠ Notebook ফ͑ͳ͍• ϗετͷϘϦϡʔϜΛϚϯτ͍ͯ͠Δҝ
ͳΜͰͦΜͳ͜ͱ͢Δඞཁ͕ʁ• ʮڥΛ࠶ݱͰ͖ΔʯΑ͏ʹ͢ΔͨΊ• ࢼߦࡨޡͰڥ͙ͪΌ͙ͪΌʹͯ͠ ʮ࠶ݱͰ͖ͳ͍͚Ͳ͜ͷڥͳΒ ɹྑ͍ੳ݁Ռ͕ग़ͤ·͢ʂʯ ͍ͬͯ͏ͷ࠷ѱͰʁ• ʮͲ͏ͬͨΒ͜ͷڥΛ࠶ݱͰ͖Δ͔ʯΛ ৗʹҙࣝ͠ͳ͕Β࣮ݧ͠·͠ΐ͏
ྫɿ ੳҊ݅• GPU αʔόͷ Jupyter Ͱੳ͍ͯͨ͠• ڥΛ࠶ݱ͢ΔεΫϦϓτΛॻ͖ͳ͕Βੳͨ͠• Ϟδϡʔϧͷڍಈ͕͓͔͘͠ͳͬͨͱ͖ʹ ʮίϯςφյͯ͠࠷ॳ͔Β࡞Γͯ͠ΈΑ͏ʯ Λ͙͢ʹ࣮ߦͯͤͨ͠• ೲʹॳظઃఆεΫϦϓτΛೖΕΔ͚ͩͰ ͦΕ͕ڥߏஙखॱॻʹͳͬͨ
·ͱΊ
·ͱΊ• Docker ࣮ݧͷ༑• ؆୯ʹ࡞ͬͯյͤΔ• ڥͷ࠶ݱੑΛ୲อͰ͖Δ• ͍͜ͳ͍͖ͯ͠·͠ΐ͏• ڭ͑ΔͷͰͳΜͰ㘤͍ͯʂʂʂ