$30 off During Our Annual Pro Sale. View Details »

systemd-nspawn は便利らしい

systemd-nspawn は便利らしい

@threetreeslight
on Repro Tech Meetup #1

threetreeslight

July 27, 2018
Tweet

More Decks by threetreeslight

Other Decks in Programming

Transcript

  1. systemd-nspawn は便利らしい @threetreeslight on Repro Tech Meetup #1 1 /

    22
  2. WHOAMI @threetreeslight / VPoE at Repro shinjuku.rb, shinjuku-aar, shinjuku-mokumoku, Hacking

    HR! などのコミュニティオーガナイザーしています 2 / 22
  3. とあるもくもく会に て・・・ 「 systemd-nspawn が便利すぎてdocker の command 忘れた話を聞いたので使ってみた 」と いう話を聞く

    3 / 22
  4. そんなものが そんなものが そんなものが そんなものが そんなものが そんなものが そんなものが そんなものが そんなものが そんなものが

    そんなものが そんなものが 世の中にある 世の中にある 世の中にある 世の中にある 世の中にある 世の中にある 世の中にある 世の中にある 世の中にある 世の中にある 世の中にある 世の中にある なんて!!! なんて!!! なんて!!! なんて!!! なんて!!! なんて!!! なんて!!! なんて!!! なんて!!! なんて!!! なんて!!! なんて!!! 4 / 22
  5. systemd-nspawn って 何? systemd-nspawn is like the chroot command, but

    it is a chroot on steroids. -- archlinux wiki - systemd-nspawn 5 / 22
  6. 強くてヤバイ 強くてヤバイ 強くてヤバイ 強くてヤバイ 強くてヤバイ 強くてヤバイ 強くてヤバイ 強くてヤバイ 強くてヤバイ 強くてヤバイ

    強くてヤバイ 強くてヤバイ chroot chroot chroot chroot chroot chroot chroot chroot chroot chroot chroot chroot 6 / 22
  7. 全くわからん 全くわからん 全くわからん 全くわからん 全くわからん 全くわからん 全くわからん 全くわからん 全くわからん 全くわからん

    全くわからん 全くわからん 7 / 22
  8. もうすこし読み解くと systemd-nspawn は軽量な名前空間コンテナ技術。具 体的には以下を仮想化する ファイルシステム階層 プロセスツリー さまざまなIPC サブシステム ホストとドメイン名 8

    / 22
  9. なるほど? なるほど? なるほど? なるほど? なるほど? なるほど? なるほど? なるほど? なるほど? なるほど?

    なるほど? なるほど? 9 / 22
  10. 以下、間違っ 以下、間違っ 以下、間違っ 以下、間違っ 以下、間違っ 以下、間違っ 以下、間違っ 以下、間違っ 以下、間違っ 以下、間違っ

    以下、間違っ 以下、間違っ てたらごめん てたらごめん てたらごめん てたらごめん てたらごめん てたらごめん てたらごめん てたらごめん てたらごめん てたらごめん てたらごめん てたらごめん なさい なさい なさい なさい なさい なさい なさい なさい なさい なさい なさい なさい 10 / 22
  11. DOCKER の構成技術 1. namespaces <- 2. Control groups <- 3.

    Union le systems 4. Container format From dockr overview - the-underlying-technology 11 / 22
  12. linux namespace 階層構造に名前空間を切り分け、そのアクセスを制 限するやつ。 container 内のPID が1 から始まるのはこの⼦のおか げ。 --

    wiki - Linux namespaces 12 / 22
  13. Control groups(cgroup) process をgrouping し、CPU, memory, disk I/O, network, etc.

    のresouce の利⽤を監視、制限するや つ。 このおかげで特定プロセスがhost のリソースを専有 してしまう事象を防ぐ。 -- wiki - cgroups 13 / 22
  14. で、chroot は? ルートディレクトリを変更して、その外のファイル やコマンドへのアクセスを制限するやつ。 docker run --rm -it debian:latest sh

    apt-get update apt-get install -y binutils debootstrap mkdir -p /srv/chroot/wheezy debootstrap --arch i386 wheezy /srv/chroot/wheezy http://httpredi chroot /srv/chroot/wheezy /bin/bash I have no name!@1af6c5c55369:/$ # いやっふぅ https://wiki.debian.org/chroot 14 / 22
  15. systemd-nspawn の雰 囲気 linux namespace + chroot = a chroot

    on steroids 15 / 22
  16. やってみる debian/jessie64 # create a new container using debootstrap $

    CDIR=/var/lib/machines/freedombox $ sudo debootstrap sid $CDIR $ sudo systemd-nspawn -D $CDIR --machine FreedomBox root@FreedomBox:~$ apt-get install -y freedombox-setup # set root password and stop the container root@FreedomBox:~$ passwd root root@FreedomBox:~$ ^D 16 / 22
  17. いくぜ! # start the container and its services $ sudo

    systemd-nspawn -D $CDIR --machine FreedomBox -b Spawning container FreedomBox on /var/lib/machines/freedombox. Press ^] three times within 1s to kill container. /etc/localtime is not a symlink, not updating container timezone. systemd 239 running in system mode. (+PAM +AUDIT +SELINUX +IMA +A Detected virtualization systemd-nspawn. Detected architecture x86-64. Welcome to Debian GNU/Linux buster/sid! Set hostname to <jessie>. File /lib/systemd/system/systemd-journald.service:36 configures a Proceeding WITHOUT firewalling in effect! (This warning is only s [ OK ] Reached target Swap. [ OK ] Reached target System Time Synchronized. [ OK ] Listening on Syslog Socket. 17 / 22
  18. やったね! 普通のdocker image をtar で固めたのをnspawn で⽴ち 上げても動く(らしい) 18 / 22

  19. 何が嬉しいか?( 捻り出 す) docker に関わるecosystem が不要なので、純粋に隔離環 境つくるときはありそう? Docker のようにLayer で管理しないのでimage

    が軽い。 systemd と組み合わせて起動時にいい感じに⽴てとくと かもできる(と思う) ただの le なので、気合⼊れればgit 管理できる(gitignore はいっぱい書く) 19 / 22
  20. だが systemd が動くと ころしか動かない ちょっと環境汚さず動かすのなら、 chroot とdebootstrap で良い気もする 20 /

    22
  21. コンテナ技術便利 ❤ 21 / 22

  22. REFERENCES REFERENCES REFERENCES REFERENCES REFERENCES REFERENCES REFERENCES REFERENCES REFERENCES REFERENCES

    REFERENCES REFERENCES chroot, cgroups and namespaces — An overview archlinux wiki - systemd-nspawn debian - nspawn wiki - Linux namespaces wiki - cgroups 22 / 22