Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Linuxコンテナ入門 〜コンテナの基礎と最新情報〜 (2014-04-12)

Linuxコンテナ入門 〜コンテナの基礎と最新情報〜 (2014-04-12)

『第3回 コンテナ型仮想化の情報交換会@大阪』でお話した時のスライドです.

参考 URI にリンクしてますが,Speakerdeck のスライドで見てるとクリック出来ないので,PDFをダウンロードしてご覧ください.

tenforward

April 12, 2014
Tweet

More Decks by tenforward

Other Decks in Technology

Transcript

  1. ίϯςφͷϝϦοτ ߴີ౓Խ͕Մೳ Φʔόʔϔου͕খ͍͞ ىಈ͕ૣ͍ ඞͣ͠΋γεςϜΛಈ͔͢ඞཁ͸ͳ͍ ΞϓϦέʔγϣϯίϯςφ ίϯςφʹϝϞϦΛݻఆతʹׂΓ౰ͯΔඞཁ͕ͳ͍ Ծ૝Ϛγϯͷ্Ͱ΋໰୊ͳ͘ಈͥ͘ u ىಈ͍ͯ͠Δ04

    Χʔωϧ ͸Ұͭ  u ϋʔυ΢ΣΞͷԾ૝Խ͕ෆཁ  u Ծ૝ϚγϯͷىಈͰ͸ͳ͘ɼϗετ04͔ΒݟͨΒ୯ʹϓϩηε͕ىಈͯ͠ ͍Δ͚ͩͳͷͰɼී௨ͷϓϩάϥϜ͕ىಈ͢Δͷͱ΄ͱΜͲมΘΒͳ͍  u ྫ͑͹ίϯςφ಺Ͱ͸IUUQEͷΈ͕ಈ͍͍ͯΔ  u u ࠷ۙ͸,7.ͷ্Ͱ,7.ಈ͍ͨΓ͢ΔͷͰίϯςφͳΒͰ͸ͱ͍͏Θ͚Ͱ ΋ͳ͍  
  2. -JOVYʹ͓͚Δίϯςφ࣮૷ Χʔωϧͷػೳ ύον  ΧʔωϧͷػೳΛ࢖͏VTFSTQBDFπʔϧ Χʔωϧ ύον VTFSTQBDFπʔϧ Χʔωϧ VTFSTQBDFπʔϧ

    લճΑΓ૿͑ͨ u 0QFO7;7JSUVP[[P ঎༻ -JOVY74FSWFS   u -9$ MJCWJSU MYDυϥΠό TZTUFNE TZTUFNEOTQBXO W[DUMGPSVQTUSFBNLFSOFM MNDUGZ EPDLFS MJCDPOUBJOFS Ҏ߱       ΑΓલ͸-9$্Ͱಈ͍͍͕ͯͨɼͰ-9$ͳ͠Ͱ΋ಈ࡞Մೳ ʹ  
  3. -9$ ΍΍͍͜͠ -9$ IUUQMJOVYDPOUBJOFSTPSH MJCWJSU ͷ-9$ίϯςφυϥΠό  IUUQMJCWJSUPSH ͲͪΒ΋ಉ͡-9$ͱ͍͏໊લΛ࢖͍ͬͯΔ͕ɼઃఆϑΝΠϧ͸ผʑɽΧʔω ϧͷಉ͡ػೳΛ࢖ͬͨผͷ࣮૷ɽ

    u -JOVYͷίϯςφΛૢ࡞͢ΔVTFSTQBDFπʔϧ ίϚϯυ܈ ʰ6CVOUVʱͷίϯςφπʔϧΩοτͷੑ͕֨ڧ͍ ݱࡏͷTUBCMF͸ ݁ߏසൟʹϦϦʔε͞Ε͍ͯ·͢    ܥ͸6CVOUVͷ-54ʹΠϯετʔϧ͞ΕΔͷͰ೥ϝϯ ςφϯε͞Ε·͢  u ࠷ۙ-9$ͷઃఆϑΝΠϧΛίϯόʔτ͢Δػೳ͕࣮૷͞Εͨ    u ίΞͷػೳ͸-JOVYΧʔωϧͷػೳΛ࢖͍ͬͯΔͷͰಈ͖͸ಉ͕ͩ͡ɼप ลͷ࣮૷͕ҟͳΔ  
  4. ͱΓ͋͑ͣ-9$ͰίϯςφΛىಈͯ͠ΈΔ -9$Λ࢖͏ͳΒ6CVOUV -9$ϝϯςφ6CVOUVσϕϩούʔ ં֯ͳͷͰ6CVOUV-54Ͱ࢖͍·͠ΐ͏ ϦϦʔε༧ఆ u u u -54 BMQIB

    -54 ࣮࣭૬౰    # apt-get install lxc # lxc-create -n ct01 -t ubuntu # lxc-start -n ct01 -d # lxc-console -n ct01 
  5. ίϯςφͷϓϩηεͷ༷ࢠ ਌؀ڥ্ͰίϯςφͷϓϩηεΛݟΔͱ ίϯςφ಺ͰݟΔͱ # pstree -p init(1)!"! !"!acpid(1041) :(snip) #!

    #!lxc-start(15592)!!! !!!init(15597)!"! !"!cron(15877) $ $ #! #!dhclient3(15817) $ $ #! #!getty(15867) $ $ #! #!getty(15871) :(snip) init(1)-+-cron(252) |-dhclient3(192) |-getty(242) |-getty(246) :(snip) 
  6. ΞϓϦέʔγϣϯίϯςφ ίϯςφ಺ͰTCJOJOJUΛىಈ͠ͳͯ͘΋ɼ໨తͷϓϩάϥϜͷΈىಈՄೳ ͜ͷ ྫ͸ແཧ໼ཧײ͋Γ·͢X ɽ # lxc-start -n ct01 --

    /usr/sbin/apache2 -DFOREGROUND # pstree -p 15535 bash(15535)!"! !"!lxc-start(19577) %! %!lxc-start(19708)!!! !!!apache2(19714)!"! !"!apache2(19740)!"! !"!{apache2}(19771) $ $ #! #!{apache2}(19772) $ $ #! #!{apache2}(19773) :(snip) EPDLFS͸ΑΓલ͸ΞϓϦέʔγϣϯίϯςφઐ༻Ͱͨ͠ γεςϜͷ TCJOJOJU͸࣮ߦͰ͖ͳ͔ͬͨ ɽ u 
  7. $FOU04Ͱಈ͔͍ͨ͠ΜͰ͚͢Ͳ FQFMΛ௥Ճ $FOU04ͷΧʔωϧ͸ίϯςφతͳࢹ఺͔Β͢Δͱͪΐͬͱݹ͍Ͱ͢ ʹ͸ςϯϓϨʔτ MYDDFOUPT ؚ͕·Ε·ͤΜɽ u ͷύοέʔδ  u

    $FOU04ͷLFSOFM͸ͰɼίϯςφతʹݟΔͱଠݹͷੲɽഇࢭ ͞Εͨػೳͱ͔ɼະ࣮૷ͷػೳͱ͔ ࣮૷͕ෆे෼ͳOFU@QSJP QFSG@FWFOUDHSPVQ͸Ϛ΢ϯτ͠ͳ͍  OT OBNFTQBDF DHSPVQ Ͱഇࢭ   u MYDܥʹ͸MYDDFOUPTؚ͕·Ε·͢  
  8. -JOVYͰίϯςφΛ࣮ݱ͢ΔͨΊͷػೳ ϓϩηεΛάϧʔϓԽͯ͠ଞͷάϧʔϓͱִ཭ άϧʔϓԽͨ͠ϓϩηεʹର͢ΔϦιʔε੍ݶ ͦͷଞ u ˠ/BNFTQBDF ໊લۭؒ  u ˠ$HSPVQT

    DPOUSPMHSPVQT  u ωοτϫʔΫ WFUI NBDWMBO έʔύϏϦςΟ $IFDLQPJOU3FTUPSF $3*6 DISPPU QJWPU@SPPU ͳͲͳͲ      
  9. /BNFTQBDFͷछྨ  .PVOU/BNFTQBDF 654/BNFTQBDF 1*%/BNFTQBDF u ϓϩηε͔Βݟ͍͑ͯΔϚ΢ϯτͷू߹ɼૢ࡞Λ෼཭͢Δɽ/BNFTQBDF ಺ͷNPVOU VNPVOU͸ଞͷ/BNFTQBDFʹ͸Өڹ͠ͳ͍ ࢀߟ

    Ϛ΢ϯτ໊લۭؒΛద༻͢Δ *#.EFWFMPQFS8PSLT   u ϗετ໊ͳͲɼVOBNF  ͕ฦ͢஋ͷू߹Λ෼཭ɽTFUEPNBJOOBNF  TFUIPTUOBNF  Ͱ/BNFTQBDF಺ͷ஋ͷΈมߋͰ͖Δ  u 1*%ۭؒͷ෼཭ɽ৽͍͠1*%/BNFTQBDFͰ͸1*%͔Β࢝·Δ1*%͕ ׂΓ౰ͯΒΕΔɽ਌͔Βࢠͷ1*%/BNFTQBDF͸ݟ͑Δ ਌ͷۭؒͷ1*% Λ࣋ͭ ͕ɼࢠ͔Β਌͸ݟ͑ͳ͍  
  10. /BNFTQBDFͷछྨ  *1$/BNFTQBDF 6TFS/BNFTQBDFd /FUXPSL/BNFTQBDF u 4ZT7*1$ΦϒδΣΫτɼ104*9ϝοηʔδΩϡʔͷִ཭  u ಠཱͨ͠6*%(*%ۭؒͱ֎෦ۭؒͷϚοϐϯά

    ྫ͑͹ɼִ཭ۭؒͰ͸ VJEHJEɼ֎෦Ͱ͸ͱ͔ՄೳʹͳΔ  u ωοτϫʔΫϦιʔεͷִ཭ɽωοτϫʔΫσόΠεɼΞυϨεɼϧʔςΟ ϯάςʔϒϧɼιέοτɼϑΟϧλϦϯά  
  11. $HSPVQ  ϓϩηεΛάϧʔϓԽ͠ɼάϧʔϓʹରͯ͠Ϧιʔε੍ݶΛߦ͏ɽผʹίϯςφઐ ༻ͷ࢓૊ΈͰ͸ͳ͍ɽ DQV DQVBDDU DQVTFU u $'4 $PNQMFUFMZ'BJS4DIFEVMFS

    CBOEXJEUIDPOUSPMɽ୯Ґ࣌ؒ಺ͷ άϧʔϓ಺ͷλεΫ͕࣮ߦͰ͖Δ߹ܭ࣌ؒΛ੍ݶ͢Δ Ͱ࣮૷ ૬ର഑෼ɽάϧʔϓؒͷ$16࣌ؒͷׂ౰ͷׂ߹Λࢦఆ͢Δɽྫ͑͹ (SPVQ" (SPVQ#ͱ͢Δͱ"#  ࢀߟ -JOVYͷ$'4CBOEXJEUIDPOUSPM   u άϧʔϓ಺ͷ$16ϦιʔεͷϨϙʔτ $16࣌ؒ  u ׂΓ౰ͯΔ$16 ϝϞϦϊʔυͷׂ౰  
  12. $HSPVQ  EFWJDF GSFF[FS NFNPSZ CMLJP #MPDL*0 u σόΠε΁ͷΞΫηεڐՄɼ੍ݶͷࢦఆ 

    u άϧʔϓ಺ͷϓϩηεΛશͯҰ࣌ఀࢭ͢Δ  u ϝϞϦϦιʔεͷ੍ݶ ϢʔβϝϞϦɼΧʔωϧϝϞϦ  u *0XFJHIUDPOUSPMMFS Ҏ߱ άϧʔϓͷ༏ઌ౓Λࢦఆ͢Δ *0UISPUUMJOH Ҏ߱ άϧʔϓ಺ͷϓϩηεͷσόΠεʹର͢Δ CZUFTTFDPOEͷ߹ܭͷࢦఆ   ࢀߟ -JOVYͷ৽ػೳ*0UISPUUMJOH  
  13. $HSPVQ  IVHFUMC QFSG@FWFOU OFU@DMT OFU@QSJP u IVHFUMCʹର͢Δ੍ݶ Ҏ߱ NNIVHFUMCBEEOFX)VHF5-#DHSPVQ

      u άϧʔϓ୯ҐͰQFSGπʔϧͰϞχλϦϯά ύϑΥʔϚϯεղੳ  u ύέοτʹࣝผࢠΛ͚ͭɼτϥϑΟοΫίϯτϩʔϧ UD ͱOFUpMUFS Ҏ߱ ͰίϯτϩʔϧՄೳʹ  u άϧʔϓؒͰͷωοτϫʔΫͷ༏ઌ౓ΛΠϯλʔϑΣʔεຖʹࢦఆ͢Δ -JOVYͷ৽ػೳ/FUXPSLQSJPSJUZDHSPVQ -JOVYͷ৽ػೳ/FUXPSLQSJPSJUZDHSPVQ     
  14. $HSPVQ  $HSPVQ͸ίϯςφͱؔ܎ͳ͘࢖༻Մೳ # mount -t tmpfs cgroup_root /sys/fs/cgroup #

    mkdir /sys/fs/cgroup/memory # mount -t cgroup -o memory cgroup /sys/fs/cgroup/memory (ϝϞϦαϒγεςϜͷϚ΢ϯτ) # mkdir /sys/fs/cgroup/memory/test01 ("test01" ͱ͍͏άϧʔϓͷ࡞੒) # echo $$ > /sys/fs/cgroup/memory/test01/tasks (ϓϩηεΛάϧʔϓʹొ࿥) # cat /sys/fs/cgroup/memory/test01/tasks (άϧʔϓ಺ͷϓϩηεͷ֬ೝ) 2824 2837 # echo 30M > /sys/fs/cgroup/memory/test01/memory.limit_in_bytes (άϧʔϓʹରͯ͠ϝϞϦ্ݶ 30M ͱ͍͏੍ݶΛઃఆ) # cat /sys/fs/cgroup/memory/test01/memory.limit_in_bytes (੍ݶ஋ͷ֬ೝ) 31457280 # cat /sys/fs/cgroup/memory/test01/memory.usage_in_bytes (ݱࡏͷ࢖༻ྔͷ֬ೝ) 565248 
  15. -JOVYΧʔωϧͷόʔδϣϯͱίϯςφ  ͜͜ͷৄࡉ͸ୈճɼୈճͷࢲͷࢿྉΛ͝ࢀর͍ͩ͘͞ɽ    u ͋ͨ͜͜Γ͔Βঃʑʹ࣮૷͕ਐΈͩ͢ .PVOU/BNFTQBDFΛআ͘ 

    u TFUOTͷ࣮૷ HMJCD͸͔Β OTDHSPVQ࡟আ   u ͦͦ͜͜࢖͑ΔΜ͡Όͳ͍Ͱ͔͢ 6CVOUV-54Ͱͦͦ͜͜-9$͕࢖͑Δ   
  16. -JOVYΧʔωϧͷόʔδϣϯͱίϯςφ      u ίϯςφతʹ͸Ұ௨Γͷػೳ͕ἧͬͨόʔδϣϯ  6TFS/BNFTQBDF͕࣮૷

    ͔͠͠ଟ਺ͷ'JMFTZTUFNͰະ࣮૷ TFUOT  ͕શͯͷ/BNFTQBDFʹՄೳʹ QSPD<1*%>OTͷվྑ ΧʔωϧϝϞϦʹର͢ΔDHSPVQʹΑΔ੍ݶ͕Մೳʹ    u 9'4Λআ͘ϑΝΠϧγεςϜͰͷ࣮૷͕׬ྃ  u 9'4Ͱͷ6TFS/BNFTQBDFαϙʔτ  ͔͠͠-9$ͰTFUOTΛ࢖༻͢ΔMYDBUUBDI͸Ͱಈ࡞͠ͳ͘ ͳͬͨ  u MYDBUUBDI΋ಈ࡞͢ΔΑ͏ʹͳͬͨ ༗ޮʹ͢΂͖ػೳΛ࢖͍ͳ͕Βɼίϯςφͷओཁػೳ΋ἧͬͨόʔδϣϯ͔ ΋   
  17. DHSPVQ࠶ઃܭ Ͱ΋ࠓͷDHSPVQͱޓ׵ੑΛอͬͨ··શ෦·ͱ΋ʹ͢Δͷ͸ෆՄೳ ͡Ό͋ɼͱΓ͋͑ͣग़དྷͦ͏ͳॴΛ΍Ζ͏ u u ୯Ұ֊૚ߏ଄ TBOF@CFIBWJPSΦϓγϣϯ  DHSPVQ͸TZTUFNE ΍ଞͷιϑτ

    ͕࡞੒ͯ͠؅ཧ͢ΔΑ͏ʹͯ͠ɼ ୭Ͱ΋DHSPVQΛ௚઀͍͡Δ͜ͱ͕Ͱ͖ͳ͍Α͏ʹ͠Α͏   αϒγεςϜಠಛͷมͳػೳΛࢭΊͯҰ؏ੑͷ͋Δಈ͖Λڧ੍͢Δ DHSPVQGTͷϚ΢ϯτΦϓγϣϯOPQSFpYͱDMPOF@DIJMESFO͕ڐ Մ͞Εͳ͘ͳΔ SFNPVOUͰ͖ͳ͍ͳͲ ࢀߟ DHSPVQJOUSPEVDFTBOF@CFIBWJPSNPVOUPQUJPO     
  18. -9$  ίϯςφͷSPPUGTʹ༷ʑͳCBDLJOHTUPSFΛར༻Մೳʹ υΩϡϝϯτͷߋ৽ u σΟϨΫτϦ ඪ४ CUSGT [GT MWN

    MPPQEFWJDF BVGT PWFSMBZGT        u NBOQBHFTॆ࣮ "1*υΩϡϝϯτ MJCMYD ೔ຊޠNBOQBHFTͷ௥Ճ     
  19. -9$  ςϯϓϨʔτͷॆ࣮ɽओཁσΟετϦϏϡʔγϣϯ͕Ұ௨Γἧͬͨ u $FOU04ͷ௥Ճ  lxc-alpine lxc-cirros lxc-openmandriva lxc-ubuntu

    lxc-altlinux lxc-debian lxc-opensuse lxc-ubuntu-cloud lxc-archlinux lxc-download lxc-oracle lxc-busybox lxc-fedora lxc-plamo lxc-centos lxc-gentoo lxc-sshd μ΢ϯϩʔυςϯϓϨʔτ u ඇಛݖίϯςφΛMYDDSFBUF͢Δʹ͸৭ʑো֐͕͋ΔͷͰμ΢ϯϩʔυͰ σΠϦʔͰओཁσΟετϦϏϡʔγϣϯͷSPPUGTJNBHF͕Ϗϧυ͞Εͯ ͍Δ   DFOUPT EFCJBO GFEPSB HFOUPP PSBDMF QMBNP VCVOUV