Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
LXC 再入門。まえだこうへい mkouhei@debian.or.jp     a.k.a. mkouhei       2012 年 7 月 26 日                         .   .   .   .   .   .
再入門?       .   .   .   .   .   .
2009 年 12 月の東京エリア Debian 勉強会のネタの焼き直しです            .   .   .   .   .   .
自己紹介 まえだこうへい ▶   Debian JP Project Leader(2011, 2012) / CouchDB JP ▶   勤務先:渋谷の会社 ▶   Python 関連の Debian パッケージのメンテナンスなど ▶   ...
宣伝。Google group で lxc JP 1流量の少ない緩いやりとりをしてます:) 1     https://groups.google.com/group/lxc-jp/about?hl=ja                    ...
LXC とは?  ▶   Linux Containers のこと        ▶   コンテナを稼働させるホスト自体のカーネルの機能        ▶   LXC を管理するための lxc-* コマンドラインツール  ▶   LXC で使え...
導入     .   .   .   .   .   .
パッケージインストール libvirt を使わなければ Squeeze でも OK  $ sudo apt-get install lxc iproute debootstrap                                 ...
kernel option 確認   $ lxc-checkconfig   Kernel config /proc/config.gz not found, looking in other places...   Found kernel ...
足りなければ、カーネルリビルドしる        .   .   .   .   .   .
確認する 即席コンテナで稼働確認 $ sudo lxc-execute -n hoge -f -- /bin/bash # lxc-info -n hoge state:   RUNNING pid:      4520 $ sudo lxc-...
システムコンテナを使う 1.   ネットワークの設定 2.   cgroup ファイルシステムのマウント 3.   コンテナの rootfs 作成 4.   コンテナのファイルの微調整 5.   コンテナの起動 簡単に Debian 環境を増や...
lxc のライフサイクル 他の仮想マシンのライフサイクルと大差ない。                                                                          lxc-freeze    ...
リソースの管理 ▶     cgroup(Control Group) を使う ▶     UI として lxc-cgroup コマンドが用意されている ▶     cgroup ファイルシステム経由でリソース管理する        cgrou...
libvirt の話    ▶   Squeeze では使えない。    ▶   Wheezy/Sid の libvirt(0.9.12) では一部機能制限があるが        使える。          ▶   一部:shutdown, r...
domain XML のサンプル  (test.xml)  <domain type=’lxc’>    <name>test</name>    <memory>500000</memory>    <os>       <type>exe<...
起動と確認 $ sudo virsh --connect net-start default $ sudo virsh --connect lxc:/// define text.xml $ sudo virsh --connect lxc:/...
私の使い方        .   .   .   .   .   .
現状 ▶   常用としては、さくらの VPS で Debian Squeeze でカス     タムビルドカーネル& lxc パッケージを使用 ▶   ネットワークの設定は/etc/network/if-up.d/に NIC およ     びブ...
私の悩み ▶   lxc コマンド群は、LXC を可動するホスト上でしか使え     ない ▶   複数ホストノードを扱う場合は不便 ▶   libvirt を使いたいが、XML 用意するのは面倒 ▶   VirtManager とか使いたくな...
そこで、ツール作った。        .   .   .   .   .   .
開発の動機 ▶     7/6 に@yssk22 に発表依頼されたので、2 年半前のネタ       を焼き直しすることにした4 ▶     実は 7/28 の pyfes で Git ネタ発表内容にもどうしようか       悩んでいた ▶ ...
じゃあ、LXC と Git を両方かねてツール作るか!            .   .   .   .   .   .
名前は iori「庵」 ということで作ってみた。 https://github.com/mkouhei/iori                                   .   .   .   .   .   .
バグ出しrequest-pullお待ちしてます。 :)           .   .   .   .   .   .
Upcoming SlideShare
Loading in …5
×

Lxc cf201207-presen

1,536 views

Published on

再lxcの話

Published in: Technology
  • Be the first to comment

Lxc cf201207-presen

  1. 1. LXC 再入門。まえだこうへい mkouhei@debian.or.jp a.k.a. mkouhei 2012 年 7 月 26 日 . . . . . .
  2. 2. 再入門? . . . . . .
  3. 3. 2009 年 12 月の東京エリア Debian 勉強会のネタの焼き直しです . . . . . .
  4. 4. 自己紹介 まえだこうへい ▶ Debian JP Project Leader(2011, 2012) / CouchDB JP ▶ 勤務先:渋谷の会社 ▶ Python 関連の Debian パッケージのメンテナンスなど ▶ 職場で使用している OpenStack の構築・運用で必要な、 周辺ツールの開発、構築とか ▶ 執筆 ▶ Git によるバージョン管理 (オーム社) ▶ KVM 徹底入門 (翔泳社) ▶ ゆったリラックス! CouchDB があるところ (@IT) #5 ▶ 知って見るみる KVM(@IT) ▶ 今日は (一応)lxc JP として呼ばれたようです . . . . . .
  5. 5. 宣伝。Google group で lxc JP 1流量の少ない緩いやりとりをしてます:) 1 https://groups.google.com/group/lxc-jp/about?hl=ja . . . . . .
  6. 6. LXC とは? ▶ Linux Containers のこと ▶ コンテナを稼働させるホスト自体のカーネルの機能 ▶ LXC を管理するための lxc-* コマンドラインツール ▶ LXC で使えるコンテナ ▶ システムコンテナ:いわゆる OS の仮想化 ▶ アプリケーションコンテナ:特定のプロセスの分離 ▶ para,full-virtualization とは違うのでホストカーネル上で 動くものしかコンテナでは使えない ▶ 他のコンテナ技術:OpenVZ, Linux-VServer,Solaris Containers, FreeBSD jail . . . . . .
  7. 7. 導入 . . . . . .
  8. 8. パッケージインストール libvirt を使わなければ Squeeze でも OK $ sudo apt-get install lxc iproute debootstrap . . . . . .
  9. 9. kernel option 確認 $ lxc-checkconfig Kernel config /proc/config.gz not found, looking in other places... Found kernel config file /boot/config-3.0.0-1-amd64 --- Namespaces --- Namespaces: enabled Utsname namespace: enabled Ipc namespace: enabled Pid namespace: enabled User namespace: enabled Network namespace: enabled Multiple /dev/pts instances: enabled --- Control groups --- Cgroup: enabled Cgroup clone_children flag: enabled Cgroup device: enabled Cgroup sched: enabled Cgroup cpu account: enabled Cgroup memory controller: enabled Cgroup cpuset: enabled --- Misc --- Veth pair device: enabled Macvlan: enabled Vlan: enabled File capabilities: enabled Note : Before booting a new kernel, you can check its configuration . . . . . .
  10. 10. 足りなければ、カーネルリビルドしる . . . . . .
  11. 11. 確認する 即席コンテナで稼働確認 $ sudo lxc-execute -n hoge -f -- /bin/bash # lxc-info -n hoge state: RUNNING pid: 4520 $ sudo lxc-stop -n hoge <-別のシェルで実行。 . . . . . .
  12. 12. システムコンテナを使う 1. ネットワークの設定 2. cgroup ファイルシステムのマウント 3. コンテナの rootfs 作成 4. コンテナのファイルの微調整 5. コンテナの起動 簡単に Debian 環境を増やせて、すぐ起動できるのが良いで すね! . . . . . .
  13. 13. lxc のライフサイクル 他の仮想マシンのライフサイクルと大差ない。 lxc-freeze FROZEN RUNNING lxc-unfreeze lxc-stop error lxc-start STARTING ABORTING lxc-create STOPPING STOPPED lxc-destroy . . . . . .
  14. 14. リソースの管理 ▶ cgroup(Control Group) を使う ▶ UI として lxc-cgroup コマンドが用意されている ▶ cgroup ファイルシステム経由でリソース管理する cgroup /sys/fs/cgroup cgroup defaults 0 0 ▶ システムコンテナの rootfs はどこでも良い。Debian で は/var/lib/lxc 以下に置くのがデフォルト ▶ Debian では/etc/default/grub に下記を設定し、 update-grub2 の実行が必要。2 GRUB_CMDLINE_LINUX="cgroup_enable=memory" 2 http://wiki.debian.org/LXC . . . . . .
  15. 15. libvirt の話 ▶ Squeeze では使えない。 ▶ Wheezy/Sid の libvirt(0.9.12) では一部機能制限があるが 使える。 ▶ 一部:shutdown, reset, reboot ができない ▶ Upstream の 7/12 のコミット 97d7f02 で shutdown が一 部制限付きで Fix されたので、0.9.14 からは使えるか も。3 3 Wheezy では使えない、ということですね…. . . . . .
  16. 16. domain XML のサンプル (test.xml) <domain type=’lxc’> <name>test</name> <memory>500000</memory> <os> <type>exe</type> <init>/sbin/init</init> </os> <vcpu>1</vcpu> <clock offset=’utc’/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <devices> <emulator>/usr/lib/libvirt/libvirt_lxc</emulator> <filesystem type=’mount’> <source dir=’/var/lib/lxc/debian/rootfs’/> <target dir=’/’/> </filesystem> <interface type=’network’> <source network=’default’/> </interface> <console type=’pty’ /> </devices> </domain> . . . . . .
  17. 17. 起動と確認 $ sudo virsh --connect net-start default $ sudo virsh --connect lxc:/// define text.xml $ sudo virsh --connect lxc:/// start test $ sudo virsh --connect lxc:/// list Id Name State ---------------------------------- 5579 test running . . . . . .
  18. 18. 私の使い方 . . . . . .
  19. 19. 現状 ▶ 常用としては、さくらの VPS で Debian Squeeze でカス タムビルドカーネル& lxc パッケージを使用 ▶ ネットワークの設定は/etc/network/if-up.d/に NIC およ びブリッジの再設定を行うスクリプトを実行させて いる . . . . . .
  20. 20. 私の悩み ▶ lxc コマンド群は、LXC を可動するホスト上でしか使え ない ▶ 複数ホストノードを扱う場合は不便 ▶ libvirt を使いたいが、XML 用意するのは面倒 ▶ VirtManager とか使いたくない。コマンドラインでやり たい . . . . . .
  21. 21. そこで、ツール作った。 . . . . . .
  22. 22. 開発の動機 ▶ 7/6 に@yssk22 に発表依頼されたので、2 年半前のネタ を焼き直しすることにした4 ▶ 実は 7/28 の pyfes で Git ネタ発表内容にもどうしようか 悩んでいた ▶ libvirt 経由で LXC 管理なら OpenStack も、とか一瞬考 えたが、妻子持ちの個人環境としては面倒 4 https://twitter.com/yssk22/status/221236629631803394. . . . . .
  23. 23. じゃあ、LXC と Git を両方かねてツール作るか! . . . . . .
  24. 24. 名前は iori「庵」 ということで作ってみた。 https://github.com/mkouhei/iori . . . . . .
  25. 25. バグ出しrequest-pullお待ちしてます。 :) . . . . . .

×