第8回コンテナ型仮想化の情報交換会の発表資料です。 参考となる情報にはPDF中からリンクをしていますが、資料中のリンクは Speaker Deck 上ではクリックできないので PDF をダウンロードしてご覧ください。
LXDೖՃ౻ହจ2015-09-26Ճ౻ହจ ୈ 8 ճίϯςφܕԾԽͷใަձˏ౦ژ 2015-09-26 1 / 24
View Slide
ࣗݾհՃ౻ହจhttp://www.ten-forward.ws/@ten forwardhttp://gplus.to/tenforwardhttps://github.com/tenforwardhttp://d.hatena.ne.jp/defiant/ (ٕज़ϒϩά)Ճ౻ହจ ୈ 8 ճίϯςφܕԾԽͷใަձˏ౦ژ 2015-09-26 2 / 24
ࣗݾհϑΝʔεταʔόɹج൫։ൃ෦ɹॴଐ৽ϒϥϯυͷϗεςΟϯάαʔϏε͡Ί·ͨ͠Ճ౻ହจ ୈ 8 ճίϯςφܕԾԽͷใަձˏ౦ژ 2015-09-26 3 / 24
ࣗݾհPlamo Linux ϝϯςφLXC ͰֶͿίϯςφೖɹʔܰྔԾԽڥΛ࣮ݱ͢Δٕज़gihyo.jp Ͱ࿈ࡌՃ౻ହจ ୈ 8 ճίϯςφܕԾԽͷใަձˏ౦ژ 2015-09-26 4 / 24
ࣗݾհLXC ͷ։ൃʹগ͠ࢀՃman page ͷຊޠ༁ެࣜϖʔδ (linuxcontainers.org) ༁όάϑΟοΫεͳͲগ͚ͩ͠ίʔυʹߩݙՃ౻ହจ ୈ 8 ճίϯςφܕԾԽͷใަձˏ౦ژ 2015-09-26 5 / 24
ࠓͷඪLXD ͷ֓ཁΛհ͢ΔՃ౻ହจ ୈ 8 ճίϯςφܕԾԽͷใަձˏ౦ژ 2015-09-26 6 / 24
ࠓͷ༰LXD ͷ֓ཁLXD ΛͬͯΈΔՃ౻ହจ ୈ 8 ճίϯςφܕԾԽͷใަձˏ౦ژ 2015-09-26 7 / 24
LXDͱՃ౻ହจ ୈ 8 ճίϯςφܕԾԽͷใަձˏ౦ژ 2015-09-26 8 / 24
LXDͱCanonical ͱ Ubuntu ͕ઃཱ͠ओಋ͢ΔϓϩδΣΫτGo Ͱॻ͔Ε͍ͯΔ2015 2 ݄ʹόʔδϣϯ 0.1 ϦϦʔεɺ2015 9 ݄ݱࡏόʔδϣϯ 0.18ݱ࣌Ͱ linuxcontainers.org ͷϓϩδΣΫτͷதͰҰ൪׆ൃʹ։ൃ͞Ε͍ͯΔՃ౻ହจ ୈ 8 ճίϯςφܕԾԽͷใަձˏ౦ژ 2015-09-26 9 / 24
LXCͱͷ̡̭̘ؔͷஔ͖͑Ͱͳ͍LXC ϗετ্ͷίϯςφΛૢ࡞͢ΔϥΠϒϥϦͱίϚϯυLXD ωοτϫʔΫ্ʹ͋Δίϯςφϗετ্ͷίϯςφΛཧɺૢ࡞͢Δlxd liblxc+liblxc ͷ Go όΠϯσΟϯά (go-lxc) Λ͍ͬͯΔ(lxc ίϚϯυ go-lxc ʹґଘ͠ͳ͍)Ճ౻ହจ ୈ 8 ճίϯςφܕԾԽͷใަձˏ౦ژ 2015-09-26 10 / 24
ߏlxdREST API Λఏڙ͠ɺίϯςφΛཧ͢ΔσʔϞϯlxclxd ͱ௨৴͠ɺίϯςφͷૢ࡞Λߦ͏ίϚϯυϥΠϯΫϥΠΞϯτnova-compute-lxdOpenStack Nova ϓϥάΠϯՃ౻ହจ ୈ 8 ճίϯςφܕԾԽͷใަձˏ౦ژ 2015-09-26 11 / 24
ಛηΩϡΞLXC ͷ༷࣋ͭʑͳηΩϡϦςΟػೳΛ༻σϑΥϧτඇಛݖίϯςφΠϝʔδϕʔεγϯϓϧͳ API ͱίϚϯυϥΠϯίϚϯυϥΠϯ lxc ίϚϯυͷΈɻαϒίϚϯυͰॲཧΛࢦఆ͢ΔϥΠϒϚΠάϨʔγϣϯՃ౻ହจ ୈ 8 ճίϯςφܕԾԽͷใަձˏ౦ژ 2015-09-26 12 / 24
LXDΛͬͯΈΔՃ౻ହจ ୈ 8 ճίϯςφܕԾԽͷใަձˏ౦ژ 2015-09-26 13 / 24
LXDͷΠϯετʔϧUbuntu 15.04 ͳΒΠϯετʔϧ؆୯ $ sudo apt-get install lxd ͔͠͠ɺLXD ߋ৽͕සൟ͗͢ΔͷͰҎԼ͕Φεεϝɻ $ sudo add-apt-repository ppa:ubuntu-lxc/lxd-stable$ sudo apt-get update$ sudo apt-get dist-upgrade$ sudo apt-get install lxd ී௨ʹιʔε͔ΒϏϧυͯ͠ OKɻྫ͑ɺ $ go get github.com/lxc/lxd$ cd $GOPATH/src/github.com/lxc/lxd$ make Ճ౻ହจ ୈ 8 ճίϯςφܕԾԽͷใަձˏ౦ژ 2015-09-26 14 / 24
ΠϝʔδͷΠϯϙʔτLXD Πϝʔδ͕ଘࡏ͢ΔΠϝʔδαʔόΛొlxd-images Ͱ Ubuntu Cloud ΠϝʔδΛऔಘͯ͠ίϯόʔτlxc image import ͰΠϯϙʔτՃ౻ହจ ୈ 8 ճίϯςφܕԾԽͷใަձˏ౦ژ 2015-09-26 15 / 24
Πϝʔδαʔόͷొͱίϯςφىಈimages.linuxcontainers.org ͕ར༻Ͱ͖Δ $ lxc remote add images images.linuxcontainers.org ΠϝʔδαʔόΛొ͢ΔͱϦϞʔτΠϝʔδΛࢦఆͯͦ͠ͷ··ىಈͰ͖Δ $ lxc launch images:centos/7/amd64 centosCreating centos done.Starting centos done.$ lxc list+--------+---------+------------+------+-----------+-----------+| NAME | STATE | IPV4 | IPV6 | EPHEMERAL | SNAPSHOTS |+--------+---------+------------+------+-----------+-----------+| centos | RUNNING | 10.0.3.113 | | NO | 0 |+--------+---------+------------+------+-----------+-----------+$ lxc stop centos Ճ౻ହจ ୈ 8 ճίϯςφܕԾԽͷใަձˏ౦ژ 2015-09-26 16 / 24
ϦϞʔταʔόͷίϯςφͷૢ࡞αʔόଆσϑΥϧτͰ Unix domain socket ܦ༝ͰϩʔΧϧ͔ΒͷଓͷΈड͚͚ΔɻϦϞʔτ͔ΒଓΛड͚͚ΔΑ͏ʹઃఆ͠ɺଓύεϫʔυΛઃఆ͢Δඞཁ͕͋Δɻ $ lxc config set core.https_address [::]$ lxc config set core.trust_password hogehoge ΫϥΠΞϯτଆϦϞʔταʔόΛొ͢Δ $ lxc remote add lxdtest02 188.166.252.161Certificate fingerprint: 80978deed77211dd06127bd7c74421a14c8e3cbc8911b9f109ok (y/n)? yAdmin password for lxdtest02:Client certificate stored at server: lxdtest02 Ճ౻ହจ ୈ 8 ճίϯςφܕԾԽͷใަձˏ౦ژ 2015-09-26 17 / 24
ϦϞʔταʔόͷίϯςφૢ࡞ొͨ͠ϦϞʔταʔό໊Λ “remote:” ͷܗͰίϯςφ໊ͷલʹ͚Δ $ lxc launch lxdtest02:trusty lxdtest02:trustyCreating trusty done.Starting trusty done.$ lxc list lxdtest02:+--------+---------+-----------+------+-----------+-----------+| NAME | STATE | IPV4 | IPV6 | EPHEMERAL | SNAPSHOTS |+--------+---------+-----------+------+-----------+-----------+| trusty | RUNNING | 10.0.3.41 | | NO | 0 |+--------+---------+-----------+------+-----------+-----------+$ lxc stop lxdtest02:trusty Ճ౻ହจ ୈ 8 ճίϯςφܕԾԽͷใަձˏ౦ژ 2015-09-26 18 / 24
ίϯςφͷҠಈlxc move ίϚϯυϩʔΧϧͰ࣮ߦ͢ΔͱίϯςφͷϦωʔϜϦϞʔτؒͰ࣮ߦ͢Δͱ (ϚΠάϨʔγϣϯ)ίϯςφఀࢭதͳΒίϯςφσʔλͷϗετؒҠಈίϯςφಈ࡞தͳΒϥΠϒϚΠάϨʔγϣϯϥΠϒϚΠάϨʔγϣϯ CRIU Λར༻͍ͯ͠ΔՃ౻ହจ ୈ 8 ճίϯςφܕԾԽͷใަձˏ౦ژ 2015-09-26 19 / 24
ϚΠάϨʔγϣϯҠಈݩҠಈઌϦϞʔτొ (lxc remote add) ͍ͯ͠Δඞཁ͋ΓCRIU ඇಛݖίϯςφʹରԠ͍ͯ͠ͳ͍ͷͰಛݖίϯςφʹ͢Δඞཁ͕͋Δprofile ͰඞཁͳઃఆΛߦ͏ $ lxc profile show criuname: criuconfig:raw.lxc: |lxc.tty = 0lxc.console = nonelxc.cgroup.devices.deny = c 5:1 rwmsecurity.privileged: "true"devices:eth0:nictype: bridgedparent: lxcbr0type: nic Ճ౻ହจ ୈ 8 ճίϯςφܕԾԽͷใަձˏ౦ژ 2015-09-26 20 / 24
ϚΠάϨʔγϣϯίϯςφʹ profile Λద༻ $ lxc profile apply local:trusty criuProfile criu applied to trusty$ lxc config show trustyname: trustyprofiles:- criu:(ུ) Ճ౻ହจ ୈ 8 ճίϯςφܕԾԽͷใަձˏ౦ژ 2015-09-26 21 / 24
ϚΠάϨʔγϣϯ $ lxc start trusty$ lxc list+--------+---------+------+------+-----------+-----------+| NAME | STATE | IPV4 | IPV6 | EPHEMERAL | SNAPSHOTS |+--------+---------+------+------+-----------+-----------+| trusty | RUNNING | | | NO | 0 |+--------+---------+------+------+-----------+-----------+$ lxc move lxdtest01:trusty lxdtest02:trusty$ lxc list lxdtest02:+--------+---------+------+------+-----------+-----------+| NAME | STATE | IPV4 | IPV6 | EPHEMERAL | SNAPSHOTS |+--------+---------+------+------+-----------+-----------+| trusty | RUNNING | | | NO | 0 |+--------+---------+------+------+-----------+-----------+ σϞ͠Α͏ͱࢥ͍·͕ͨ͠ݱ࣌ͷόʔδϣϯͰಈ͖·ͤΜͰͨ͠ɻՃ౻ହจ ୈ 8 ճίϯςφܕԾԽͷใަձˏ౦ژ 2015-09-26 22 / 24
·ͱΊLXD ͱϓϩδΣΫτ֓ཁLXC ͱͷؔߏಛLXD ΛͬͯΈΔΠϯετʔϧΠϝʔδૢ࡞ίϯςφૢ࡞ϚΠάϨʔγϣϯՃ౻ହจ ୈ 8 ճίϯςφܕԾԽͷใަձˏ౦ژ 2015-09-26 23 / 24
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻՃ౻ହจ ୈ 8 ճίϯςφܕԾԽͷใަձˏ౦ژ 2015-09-26 24 / 24