Dockerを個人サービスに使ってみた

194f4e605d797dda7a64fd08734eff82?s=47 chato
November 25, 2017

 Dockerを個人サービスに使ってみた

WEBエンジニア勉強会 #04の登壇資料です。
膨れ上がるインフラ費用をなんとかしたい、もっと手軽に環境を作りたいなど個人サービスを題材にどんな課題があったか、それを解決するための1手段としてDockerを使ってみたことについてお話しました。

https://web-engineer-meetup.connpass.com/event/70551/

194f4e605d797dda7a64fd08734eff82?s=128

chato

November 25, 2017
Tweet

Transcript

  1. 3ZPTVLF/JTIJP !DIBUP  %PDLFSΛ ݸਓαʔϏεʹ࢖ͬͯΈͨ 8&#ΤϯδχΞษڧձ

  2. ࣗݾ঺հ /JTIJP !DIBUP Space Market, inc ݩSier ࠓ೥͔ΒWebΤϯδχΞ ωτή/ೣ/͓ञ ͕޷͖

  3. ࣸਅ ࣸਅ ࣸਅ WebΤϯδχΞืूͯ͠·͢!

  4. .PUJWBUJPO ݩʑ͸ษڧͷͨΊ झຯͰωτήͷπʔϧͳͲΛ࡞ͬͯ༡ΜͰ͍ͨ աڈݸਓͰ࡞ͬͨαʔϏεҰྫ

  5. .PUJWBUJPO ̍ͭ࡞Δͱ࣍͸͜Μͳͷ࡞Γ͍ͨͳʔ ͱߟ͑ͯɺͲΜͲΜ࡞͍͖ͬͯ ؾ͍ͮͨΒ

  6. αʔόʔߏ੒͕େมͳ͜ͱʹʂ

  7. αʔόʔߏ੒͕େมͳ͜ͱʹʂ ಉډ͗͢͠!!

  8. ͓஋ஈ΋େมͳ͜ͱʹʂ

  9. ผͷ.PUJWBUJPO -PDBMͰݕূͷࡍ౰વ؀ڥ͕ඞཁɹҎલ͸ VCVOUVΠϝʔδΛ མͱͯ͠7.ىಈ DIFGϨγϐద༻ 3BJMT /HJOY %#ͱ͔ ΞϓϦ഑ஔ

  10. ผͷ.PUJWBUJPO -PDBMͰݕূͷࡍ౰વ؀ڥ͕ඞཁɹҎલ͸ VCVOUVΠϝʔδΛ མͱͯ͠7.ىಈ DIFGϨγϐద༻ 3BJMT /HJOY %#ͱ͔ ΞϓϦ഑ஔ Πϯετʔϧʹएׯ͕࣌ؒ

    ͔͔ΔͷͰ௒͓खࠒͱ͍͏ Θ͚Ͱ͸ͳ͔ͬͨ ʢҰ౓࡞ͬͨΒେࣄʹͯͨ͠ײ͡ʣ
  11. ·ͨผͷ.PUJWBUJPO ͪΐͬͱͨ͜͠ͱΛݕূ͢Δͱ͖ʹ؀ڥߏங͕େม ɾެࣜͷΠϯετʔϧํ๏ࢀߟʹ͢Δ ɹɹɹɹˣ ɾChefϨγϐΛ࡞ͬͯద༻ ɹɹɹɹˣ ɾͳ͔ͥಈ͔ͳ͍ ɹɹɹɹˣ ɾΊΜͲ͘͘͞ͳΔ ɹɹɹɹˣ

    ɾެࣜͰVMΠϝʔδ͕͋ͬͨͷͰͦΕ࢖͏ લʹHadoop(Hue)؀ڥΛ࡞ͬͨ࣌ͷ͓࿩
  12. ·ͨผͷ.PUJWBUJPO ͪΐͬͱͨ͜͠ͱΛݕূ͢Δͱ͖ʹ؀ڥߏங͕େม ɾެࣜͷΠϯετʔϧํ๏ࢀߟʹ͢Δ ɹɹɹɹˣ ɾChefϨγϐΛ࡞ͬͯద༻ ɹɹɹɹˣ ɾͳ͔ͥಈ͔ͳ͍ ɹɹɹɹˣ ɾΊΜͲ͘͘͞ͳΔ ɹɹɹɹˣ

    ɾެࣜͰVMΠϝʔδ͕͋ͬͨͷͰͦΕ࢖͏ લʹHadoop(Hue)؀ڥΛ࡞ͬͨ࣌ͷ͓࿩ ࢼ͠ͷஈ֊Ͱ ΋͏Ͱ͖͕͋Γͷ؀ڥ͕͋ΔͷͳΒ͹ ͦΕΛ࢖ͬͨ΄͏ָ͕ ʢΠϯετʔϧʹ࣌ؒΛ࢖͍ͨ͘ͳ͍ʣ
  13. .PUJWBUJPO ݸਓαʔϏεͷ՝୊ʣ ɾαʔόʔίετΛѹॖ͍ͨ͠ ɹຊ౰ʹ͜ͷ୆਺ͷαʔόʔ͕ඞཁͳͷ͔ʁ ɹϦιʔεΛ࢖͍͖Εͯͳ͍ ॠൃྗ͸ඞཁʣ ɾผͷ໾ׂαʔϏεΛͳΔ΂͘ ɹಉډͤͨ͘͞ͳ͍ ɹ ɾ΋ͬͱखܰʹ։ൃಈ࡞֬ೝ؀ڥΛ࡞Γ͍ͨ

  14. ͜ͷΑ͏ͳ՝୊Λ ղܾ͢Δखஈͷ1ͭͱͯ͠ Λ࢖ͬͯΈͨ

  15. %PDLFSͱ͸ʁ ΞϓϦ࣮ߦ؀ڥΛͦͷ··ɺശʢίϯςφʣʹ٧Ίͯ ࣮ߦ͢Δπʔϧ. VM͸ήετOS౳໨తͷ΋ͷΛಈ͔ͨ͢ Ίʹؔ܎ͳ͍΋ͷ΋͍Ζ͍Ζಈ͖Ϧιʔεͷແବ͕͋Δ ͕ɺͦΕ͕ͳ͍ͷ͕ಛ௃ 7JSUVBM.BDIJOF $POUBJOFST IUUQTXXXEPDLFSDPNXIBUDPOUBJOFSΑΓ

  16. %PDLFSΠϝʔδ %PDLFSͰ͸࣮ߦ؀ڥͳͲΛͭͷύοέʔ δʹͯ͠Πϝʔδͱͯ͠อଘɺ഑෍͍ͯ͠Δ
 7.ΠϝʔδΛอଘ഑෍͍ͯ͠ΔΈ͍ͨͳײ͡ʣ

  17. Ҏલͷ$IFGͰͷ3VCZΠϯετʔϧ SiteCookbookͷ࡞੒

  18. Ҏલͷ$IFGͰͷ3VCZΠϯετʔϧ SiteCookbookͷ࡞੒ ్த·Ͱ͏·͍͔͘͘ࢼ͢ SnapShot ్த·Ͱ͏·͍͔͘͘ࢼ͢ SnapShot ࢼࣦͯ͠ഊ ࣦഊͨ͠Βࣦഊͨ࣌͠఺·Ͱ໭͠ ͯɺϨγϐमਖ਼ͯ͠࠶࣮ߦ →

    εφοϓγϣοτ͔Βͷ࣮ߦ͸ิ ॿπʔϧ͕ἧ͍ͬͯΔͱ͸ݴ͑ए ׯ໘౗ͩͱײͯͨ͡ μ΢ϯϩʔυˠΠϯετʔϧຖճ͔͔࣌ؒΔ
  19. %PDLFSͰͷ3VCZΠϯετʔϧ Dockerfileͷ࡞੒

  20. %PDLFSͰͷ3VCZΠϯετʔϧ Dockerfileͷ࡞੒ ͢Ͱʹग़དྷ্͕͍ͬͯΔΠϝʔδΛ࢖͏͚ͩ ୭͔͕࡞ͬͨ΋ͷΛ࠶ൃ໌͢Δඞཁ͕ͳ͍ ˠΠϯετʔϧʹ࣌ؒΛ͔͚ͣʹଞͷ͜ͱʹ͕͚࣌ؒ͞Δ

  21. %PDLFSͰ3BJMTΞϓϦ഑ஔ·Ͱ ్த·Ͱ͏·͘ ͍͔͘ࢼ͢ ௥ՃͰهࡌͯ͠΋લͷ ϨΠϠʔ͔Βελʔτ ్த·Ͱ͏·͘ ͍͔͘ࢼ͢ ࣦഊͨ͠ ௚ͯ͠Ϧϥϯ ͍͍ͪͪsnapshotΛऔΔඞཁ͕ͳ͍

    ʢ͍͍ײ͡ʹߴ଎Ͱ΍ͬͯ͘ΕΔʣ
  22. σϓϩΠํ๏ͷൺֱ $IFG $BQJTUSBOP %PDLFSͷ৔߹ Πϯετʔϧ ͔͔࣌ؒΔ DIFGϨγϐద༻ ຖճ΍Βͳ͍ TTIͰ഑ஔ DBQJTUSBOP

    EPDLFSpMF͔Β Πϝʔδ࡞੒ *NBHF഑ஔ μ΢ϯϩʔυͷ ࣌ؒͷΈ!!
  23. ஫ҙ఺σʔλͷӬଓԽ ɾ಺෦ͷσʔλ͸ίϯςφΛ࠶࡞੒ͨ͠ஈ֊Ͱݟ͑ ͳ͘ͳͬͯ͠·͏ ʢຖճΠϝʔδ࡞੒࣌఺ʹ໭Δʣ ɾίϯςφΛഁغ͢Δͱσʔλ͸ফ͑Δ

  24. ஫ҙ఺σʔλͷӬଓԽ ɾ಺෦ͷσʔλ͸ίϯςφΛ࠶࡞੒ͨ͠ஈ֊Ͱݟ͑ ͳ͘ͳͬͯ͠·͏ ʢຖճΠϝʔδ࡞੒࣌఺ʹ໭Δʣ ɾίϯςφΛഁغ͢Δͱσʔλ͸ফ͑Δ Data Volume or Data Volume

    ContainerΛ࢖͏
  25. σʔλͷӬଓԽ ӬଓԽ͍ͨ͠σʔλ͸ Data Volume Container΁ ͜ͷίϯςφ͸σϓϩΠͷ ͨͼʹ࡞Γ௚͠͸͠ͳ͍ %BUB7PMVNF$POUBJOFS "QQ$POUBJOFS ΞϓϦίϯςφ͸

    σϓϩΠͷͨͼʹ ॳظԽ͞ΕΔ
  26. αʔόʔΛू໿ͨ͜͠ͱͰ Ҏલ ࠓ લΑΓ΋αʔόʔͷ ϦιʔεΛ׆͔͍ͤͯΔ

  27. αʔόʔू໿࣌ίϯςφԽ͢Δ͜ͱͰ Ҏલ ࠓ Mysql Nginx Rails ΞϓϦ1 Rails ΞϓϦ2 Mysql

    Nginx Rails ΞϓϦ1 Rails ΞϓϦ2 ֤αʔϏεʹෑډ͕Ͱ͖ͨ
  28. ࣮ࡍʹ࢖ͬͯΈͯ ˔Ϧιʔεফඅͷ೾͕֤αʔϏεͰ͕͋ͬͨɺαʔόʔΛ ू໿ͨ͜͠ͱͰલΑΓ΋ޮ཰Α͘Ϧιʔε͕࢖͍͑ͯΔ ˔ίϯςφԽ͢Δ͜ͱͰ֤αʔϏεʹෑډ͕Ͱ͖ͨɻผ αʔόʔʹҠ͢ͷ΋ָͩ͠ɺखݩͷ؀ڥ͕ͦͷ··ຊ൪ ʹ͍͘ͷ͕Α͍
 ʢΠϯετʔϧىಈˠμ΢ϯϩʔυىಈʹͳͬͨʣ ˔࠷ۙ5FBNTQFBLΛಋೖ͕ͨ͠ݕূಋೖ΋$IFGΑ ΓϥΠτͳײ͡Ͱߏஙͱຊ൪ద༻͕Ͱ͖ͨ