systemd-nspawn は便利らしい

systemd-nspawn は便利らしい

@threetreeslight
on Repro Tech Meetup #1

0a918b7637fcfafeb06264db039552df?s=128

threetreeslight

July 27, 2018
Tweet

Transcript

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

    Space / Arrow Keys | - Menu | - Fullscreen | - Overview | - Blackout | - Speaker | - Help M F O B S ?  1 / 22
  2. WHOAMI Image @threetreeslight / VPoE at Repro shinjuku.rb, shinjuku-aar, shinjuku-mokumoku,

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

    [ GitPitch @ github/threetreeslight/slides ]  3 / 22
  4. そんなものが そんなものが そんなものが そんなものが そんなものが そんなものが 世の中にある 世の中にある 世の中にある 世の中にある

    世の中にある 世の中にある なんて!!! なんて!!! なんて!!! なんて!!! なんて!!! なんて!!! [ GitPitch @ github/threetreeslight/slides ]  4 / 22
  5. systemd-nspawn って 何? systemd-nspawn is like the chroot command, but

    it is a chroot on steroids. -- archlinux wiki - systemd-nspawn [ GitPitch @ github/threetreeslight/slides ]  5 / 22
  6. 強くてヤバイ 強くてヤバイ 強くてヤバイ 強くてヤバイ 強くてヤバイ 強くてヤバイ chroot chroot chroot chroot

    chroot chroot [ GitPitch @ github/threetreeslight/slides ]  6 / 22
  7. 全くわからん 全くわからん 全くわからん 全くわからん 全くわからん 全くわからん [ GitPitch @ github/threetreeslight/slides

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

    github/threetreeslight/slides ]  8 / 22
  9. なるほど? なるほど? なるほど? なるほど? なるほど? なるほど? [ GitPitch @ github/threetreeslight/slides

    ]  9 / 22
  10. 以下、間違っ 以下、間違っ 以下、間違っ 以下、間違っ 以下、間違っ 以下、間違っ てたらごめん てたらごめん てたらごめん てたらごめん

    てたらごめん てたらごめん なさい ه なさい ه なさい ه なさい ه なさい ه なさい ه [ GitPitch @ github/threetreeslight/slides ]  10 / 22
  11. DOCKERの構成技術 1. namespaces <- Ĕ 2. Control groups <- Ĕ

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

    namespaces [ GitPitch @ github/threetreeslight/slides ]  12 / 22
  13. Control groups(cgroup) processをgroupingし、CPU, memory, disk I/O, network, etc.のresouceの利用を監視、制限するや つ。 このおかげで特定プロセスがhostのリソースを専有し

    てしまう事象を防ぐ。 -- wiki - cgroups [ GitPitch @ github/threetreeslight/slides ]  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 [ GitPitch @ github/threetreeslight/slides ]  14 / 22
  15. systemd-nspawn の雰 囲気 linux namespace + chroot = a chroot

    on steroids [ GitPitch @ github/threetreeslight/slides ]  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 [ GitPitch @ github/threetreeslight/slides ]  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 [ GitPitch @ github/threetreeslight/slides ]  17 / 22
  18. やったね! 普通のdocker imageをtarで固めたのをnspawnで立ち 上げても動く(らしい) [ GitPitch @ github/threetreeslight/slides ] 

    18 / 22
  19. 何が嬉しいか?(捻り出 す) dockerに関わるecosystemが不要なので、純粋に隔 離環境つくるときはありそう? DockerのようにLayerで管理しないのでimageが軽 い。 systemdと組み合わせて起動時にいい感じに立てと くとかもできる(と思う) ただの leなので、気合入れればgit管理できる

    (gitignoreはいっぱい書く) [ GitPitch @ github/threetreeslight/slides ]  19 / 22
  20. だが systemdが動くとこ ろしか動かない ちょっと環境汚さず動かすのなら、 chrootとdebootstrapで良い気もする Ĕ [ GitPitch @ github/threetreeslight/slides

    ]  20 / 22
  21. コンテナ技術便利 ݤ [ GitPitch @ github/threetreeslight/slides ]  21 /

    22
  22. REFERENCES REFERENCES REFERENCES REFERENCES REFERENCES REFERENCES chroot, cgroups and namespaces

    — An overview archlinux wiki - systemd-nspawn debian - nspawn wiki - Linux namespaces wiki - cgroups [ GitPitch @ github/threetreeslight/slides ]  22 / 22