歴史から紐解く Linux カーネルのコンテナ機能 / KOF2019

2591343b244565d6199f61c4acd148f9?s=47 tenforward
November 08, 2019

歴史から紐解く Linux カーネルのコンテナ機能 / KOF2019

KOF 2019 の講演資料です。
参考となる情報にはPDF中からリンクをしていますが、資料中のリンクは Speaker Deck 上ではクリックできないので PDF をダウンロードしてご覧ください。

2591343b244565d6199f61c4acd148f9?s=128

tenforward

November 08, 2019
Tweet

Transcript

  1. ྺ࢙⿾〾ඥղ。 Linux じがぼ゚〣ぢアふべػೳ KOF 2019 Ճ౻ହจʢ@ten_forwardʣ 2019-11-08 lxc-jp Project 1/39

  2. ࣗݾ঺հʢ1ʣ Ճ౻ହจ Twitter @ten_forward github https://github.com/tenforward ٕज़ϒϩά https://tenforward.hatenablog.com/ ॴଐ גࣜձࣾ

    IDC や゜アふくぎ / lxc-jp Project 2/39
  3. ࣗݾ঺հʢ2ʣ झຯ〜ぢアふべ〹〘〛〳『ɻぢアふべ〣ओ〠じがぼ゚पล〣࣮૷〠ڵຯ⿿⿴〿〳『ɻ 2007 ೥ ぢアふべぇ࢖〘〔つがもと։ൃʢVirtuozzoʣ 2009 ೥ OpenVZ/LXC ৮〿〕『 2013

    ೥ ୈ 1 ճぢアふべܕԾ૝Խ〣৘ใަ׵ձɹ։࠵ LXC ೔ຊޠ man pages ຋༁&ろがで ʢݱࡏ〤 LXD ؔ࿈〣຋༁ɺlinuxcontainers.org ຋༁〷〹〘〛〳『ʣ 2014 ೥ gihyo.jp 〜 ʮLXC 〜ֶ〫ぢアふべೖ໳ ʵܰྔԾ૝Խ؀ڥぇ࣮ݱ『぀ٕज़ʯ ࿈ࡌ։࢝ ݱࡏ CloudNative 〣೾〠৐〿஗ぁ぀ 3/39
  4. ຊ೔〣಺༰ ぢアふべ〝〤 ぢアふべ〣やきぐ゚てとふわ 2000 ೥ʙ2006 ೥〣ぢアふべք۾ ゆ゜なと〣ִ཭ ぢアふべ〣ぼひぷゞがぜ 2009ʙ2012 ೥〣ぢアふべք۾

    2013 ೥〣ぢアふべք ඇಛݖぢアふべʢUser namespaceʣ 2014 ೥Ҏ߱〣ぢアふべք۾ 〳〝〶 4/39
  5. ຊ೔〣಺༰ ɹʮྺ࢙ぇඥղ。ʯ〝⿶⿸のぐぷ゚〜『⿿ɺྺ࢙ぇશ෦௥〘〛⿶぀〝࣌ؒ⿿଍〿〳【えɻ࣍〣෦ ෼〣ゃひぜぎひゆ「〛આ໌「〳『ɻ • ぢアふべ〝〤 • ぢアふべ〣やきぐ゚てとふわ • ぢアふべ〣ぼひぷゞがぜ •

    ぢアふべ〣࣮ߦݖݶ ɹ〳〔ɺ࠷ۙ〤 OCI 〠४ڌ「〔ଟ਺〣ぢアふべ゘アのぐわ⿿ग़〛 〛⿶〳『ɻ〈〣த〠〤 VM 〹 Unikernel 〟〞〣ٕज़ぇ࢖〘〔゘アのぐわ⿿⿴〿〳『⿿ɺຊ೔ѻ⿸〣〤ੲ⿾〾ʮぢアふべʯ 〝ݺ〥ぁ〛⿶〔ɺゆ゜なとִ཭ܕ〣ʮぢアふべʯ〜『ɻ ɹぢアふべ࡞੒〠࢖⿸ぢろアへ〤 unshare ぢろアへɺip ぢろアへ〜『ʢDocker 〹 LXC 〤࢖ ⿶〳【え!!ʣ ɻ 5/39
  6. ຊ೔〣಺༰ ぢアふべ〝〤 ぢアふべ〣やきぐ゚てとふわ 2000 ೥ʙ2006 ೥〣ぢアふべք۾ ゆ゜なと〣ִ཭ ぢアふべ〣ぼひぷゞがぜ 2009ʙ2012 ೥〣ぢアふべք۾

    2013 ೥〣ぢアふべք ඇಛݖぢアふべʢUser namespaceʣ 2014 ೥Ҏ߱〣ぢアふべք۾ 〳〝〶 6/39
  7. ぢアふべ〝〤 ぢアふべ〝〤ゆ゜なと〜『: • ී௨〠ىಈ「〔ゆ゜なと〝〤গ「ҧ⿸ʮଐੑʯ⿿ࢦఆ〜 ぀ • ゆ゜なとぇִ཭͞Εۭͨؒ〜࣮ߦ『぀ • ゆ゜なと〠゙ぬがと੍ݶぇઃఆ〜 ぀ • なずゔ゙ふくʮଐੑʯぇઃఆ〜 ぀

    • 〟〞ʜ 7/39
  8. Linux 〠⿼々぀ぢアふべ Linux じがぼ゚〠〤ʮぢアふべʯ〝⿶⿸ػೳ〤͋Γ·ͤΜɻじがぼ゚〠࣮૷《ぁ〔৭ʑ〟ػೳΛ ૊Έ߹ΘͤͯʮίϯςφʯΛ࡞Γ·͢ɻ Docker 〹 LXC/LXD 〝ݴ〘〔ぢアふべ࣮૷ぇ࢖⿸୅い〿〠ࣗ෼ʹඞཁͳػೳ͚ͩΛબΜͰίϯ ςφΛ࡞Δ͜ͱ΋Ͱ͖·͢ɻ

    Linux じがぼ゚〠࣮૷《ぁ〔⿸〖ɺぢアふべ༻〣ओཁػೳ: Namespaceʢ໊લۭؒʣ: ʮִ཭ۭؒʯΛ࡞Δɻִ཭͢ΔϦιʔε͝ͱ〠 Namespace ⿿ଘࡏ cgroup: ゆ゜なと〠ର「〛Ϧιʔε੍ݶΛߦ͏ ຊ೔〤〈〣⿸〖 Namespace ぇத৺〠⿼࿩「〳『ʢKubernetes 〜〷 Namespace 〝⿶⿸໊ લ⿿ग़〛 〳『⿿ɺ〒ぁ〝〤ผ〣 Linux kernel 〣ػೳ〜『ʣ ɻ 8/39
  9. ຊ೔〣಺༰ ぢアふべ〝〤 ぢアふべ〣やきぐ゚てとふわ 2000 ೥ʙ2006 ೥〣ぢアふべք۾ ゆ゜なと〣ִ཭ ぢアふべ〣ぼひぷゞがぜ 2009ʙ2012 ೥〣ぢアふべք۾

    2013 ೥〣ぢアふべք ඇಛݖぢアふべʢUser namespaceʣ 2014 ೥Ҏ߱〣ぢアふべք۾ 〳〝〶 9/39
  10. ぢアふべ〣やきぐ゚てとふわ • ぢアふべ〣ぐゐがで〤りとぷ〣⿴぀ぶく゛ぜぷ゙ҎԼ〠ల։《ぁ぀〈〝⿿ଟ⿶ • りとぷ⿾〾〤ぢアふべぐゐがで〣び゙がぇؚ〶〛『〮〛ݟ⿺぀ • ぢアふべ಺〜〤ぢアふべ಺〣び゙が「⿾ݟ⿺〟⿶ りとぷ⿾〾ݟ〔ぶく゛ぜぷ゙び゙が ぢアふべ಺⿾〾ݟ〔ぶく゛ぜぷ゙び゙が 〈ぁ〤〞⿸〹〘〛࣮ݱ《ぁ〛⿶぀〣⿾ʁ

    10/39
  11. chroot ΋ͬͱ΋ྺ࢙ͷ͋Δίϯςφʢతػೳʣ • 1979 ೥ UNIX Version 7 〜〣৽ػೳʢੜ〳ぁ〛〔ਓʂʣ •

    1982 ೥〠 BSD 〠ಋೖ • chroot 「〔ぶく゛ぜぷ゙ҎԼ「⿾ݟ⿺〟⿶ • Linux 〠⿼々぀ chroot: • ゆ゜なと〤゚がぷぶく゛ぜぷ゙〣৘ใぇ࣋〘〛⿶぀ chroot 「〛⿶〟⿶ゆ゜なと chroot 「〔ゆ゜なと 11/39
  12. chroot 〣໰୊఺ɾたがむも゙ふく • chroot 〤ൈ々ग़【぀! • ൈ々ग़【〟⿶〽⿸〠『぀〠〤ݖݶぇണୣ『぀ඞཁ⿿⿴぀ʢcap_sys_chroot たがむも゙ふくʣ • 〞〣〽⿸〠࢖いぁ぀⿾い⿾〾〟⿶ぢアふべごアでア〜〤࢖⿶〚〾⿶ʢcap_sys_chroot

    ⿿ ඞཁ⿾〷?ʣ たがむも゙ふく〝〤? • root ⿿࣋〘〛⿶぀ݖݶぇࡉ෼Խ「〛そ゚がゆԽ「〔〷〣ɻそ゚がゆ〉〝〠༗ޮɾແޮぇࢦ ఆ〜 ぀ 12/39
  13. pivot_rootʢ2.3.41/2000 ೥ʣ • root ϑΝΠϧγεςϜࣗମΛऔΓସ͑Δʢൈ々぀〝⿶⿸֓೦⿿〟⿶ʣ • chroot 〠ൺ〮〛 pivot_root 〜 ぀৚݅〤ݫ「⿶

    pivot_root લ pivot_root ޙ • ʮ৽「⿶ root やきぐ゚てとふわʯ⿾〾〤ൈ々ग़【〟⿶ • Docker 〹 LXC/LXD 〟〞〤 pivot_root ぇ࢖༻「〛⿶぀ 13/39
  14. bind mountʢ2.4.0/2001 ೥ʣ • ぶく゛ぜぷ゙び゙が〣Ұ෦ぇผ〣ぶく゛ぜぷ゙ҎԼ〠ろげアぷ • ろげアぷ「〔ぶく゛ぜぷ゙ҎԼ〤ݩ〝ಉ」ゑぽ⿿ݟ⿺぀ • りとぷ〣ぶく゛ぜぷ゙ぇぢアふべ〝ڞ༗『぀৔߹〠〷࢖༻ pivot_root

    લ pivot_root ޙ • bind mount 「〔び゙が〤ろげアぷ《ぁ〛⿼〿やきぐ゚てとふわ〘〲。〟぀〣〜 pivot_root Ͱ͖Δ! 14/39
  15. Mount namespaceʢ2.4.19/2002 ೥ʣ • ぢアふべ಺〣ろげアぷɺろげアぷૢ࡞ぇ෼཭『぀ • ⿴぀ぢアふべ಺〜ߦ〘〔ろげアぷɺぎアろげアぷ⿿ଞ〣ぢアふべ〠Өڹぇ༩⿺〟⿶〽⿸〠 『぀ • ෼཭「〟⿶〽⿸〠〷〜 ぀ʢsystemd

    〤ぶやさ゚ぷ〜෼཭「〟⿶ঢ়ଶ〜ىಈ『぀ʣ • ଞ〣ぢアふべ〜ߦ〘〔ろげアぷૢ࡞⿿ݟ⿺〟⿶ 15/39
  16. ぶゑʢ1ʣ pivot_root 〝 bind mount 〝 Mount namespace 〣ぶゑ Namespace

    ぇ؆୯〠࡞぀〠〤 util_linux ෇ଐ〣 unshare ぢろアへ⿿࢖⿺〳『 1. Mount namespace ぇ࡞぀ 2. pivot_root 『぀〔〶〠ぢアふべやきぐ゚てとふわぇผぶく゛ぜぷ゙〠 bind mount 『぀ 3. mount ৘ใぇऔಘ『぀〔〶〠ぢアふべ༻〠 proc やきぐ゚てとふわぇ mount 『぀ 4. pivot_root 『぀ʢҎલ〣 / 〤 /old 〠ろげアぷ『぀ʣ 5. ぢアふべ಺〜 / ぇ umount 『぀ 16/39
  17. ຊ೔〣಺༰ ぢアふべ〝〤 ぢアふべ〣やきぐ゚てとふわ 2000 ೥ʙ2006 ೥〣ぢアふべք۾ ゆ゜なと〣ִ཭ ぢアふべ〣ぼひぷゞがぜ 2009ʙ2012 ೥〣ぢアふべք۾

    2013 ೥〣ぢアふべք ඇಛݖぢアふべʢUser namespaceʣ 2014 ೥Ҏ߱〣ぢアふべք۾ 〳〝〶 17/39
  18. 2000 ೥ʙ2005 ೥〣ぢアふべք۾ɹ〒〣ଞ〣࿩୊ 2000 ೥ FreeBSD jail 2002 ೥ VirtuozzoʢLinux

    ޲々঎༻ぢアふべʣ゙゙がとʢ։ൃ〤 1999 ೥։࢝ʣ 2004 ೥ Solaris Containers (Zone) 2005 ೥ OpenVZ ゆ゜でこぜぷൃ଍ʢOSS ൛ Virtuozzoʣ 18/39
  19. 2006ʙ2008 ೥〣ぢアふべք۾ Linux ぢアふべ׬੒ظ ୈҰظ 2006 ೥ UTS Namespace, IPC

    Namespaceʢ2.6.19ʣ りとぷ໊ɾへゐぐア໊ぇぢアふべ〉〝〠࣋〙ɺゆ゜なとؒ௨৴〟〞ぇぢアふべ಺ 〠ִ཭ 2007 ೥ macvlanʢ2.6.23ʣぼひぷゞがぜぐアのがやこがと 2008 ೥ pid Namespace, Network Namespace, vethʢ2.6.24ʣ ゆ゜なとɺぼひぷゞがぜ〣ִ཭ cpu, cpuacct, cpuset cgroupʢ2.6.24ʣ CPU 〠ର『぀゙ぬがと੍ݶ device cgroupʢ2.6.26ʣ freezer cgroupʢ2.6.28ʣ 19/39
  20. ຊ೔〣಺༰ ぢアふべ〝〤 ぢアふべ〣やきぐ゚てとふわ 2000 ೥ʙ2006 ೥〣ぢアふべք۾ ゆ゜なと〣ִ཭ ぢアふべ〣ぼひぷゞがぜ 2009ʙ2012 ೥〣ぢアふべք۾

    2013 ೥〣ぢアふべք ඇಛݖぢアふべʢUser namespaceʣ 2014 ೥Ҏ߱〣ぢアふべք۾ 〳〝〶 20/39
  21. PID Namespaceʢ2.6.24/2008 ೥ʣ • ぢアふべ಺〜〞え〟ゆ゜なとぇ࣮ߦ「〛⿶぀⿾ɺଞ〣ぢアふべ⿾〾ݟ⿺〔〾ぐん • ぢアふべ〉〝〠ಠཱ「〛 PID ぇ࣋〖〔⿶ •

    〔〕「ɺりとぷ (਌ Namespace) ⿾〾ぢアふべ (ࢠ〣 Namespace) 〣ゆ゜なと〤ݟ⿺ 〳『 21/39
  22. ຊ೔〣಺༰ ぢアふべ〝〤 ぢアふべ〣やきぐ゚てとふわ 2000 ೥ʙ2006 ೥〣ぢアふべք۾ ゆ゜なと〣ִ཭ ぢアふべ〣ぼひぷゞがぜ 2009ʙ2012 ೥〣ぢアふべք۾

    2013 ೥〣ぢアふべք ඇಛݖぢアふべʢUser namespaceʣ 2014 ೥Ҏ߱〣ぢアふべք۾ 〳〝〶 22/39
  23. Network Namespaceʢ2.6.24/2008 ೥ʣ Network Namespace ぼひぷゞがぜؔ࿈〣゙ぬがとぇִ཭『぀ • ぼひぷゞがぜぐアのがやこがと ʢଞ〣 Namespace

    ⿾〾ݟ⿺〟。〟〿〳『ʣ • ぎへ゛と • れがぷ • ゚がふくアそ • Firewall • ʜ • ෺ཧぐアのがやこがと〷ಛఆ〣 Namespaceʢぢアふべʣ〠ॴଐ《【〾ぁ぀ • ಛఆ〣ぐアのがやこがとぇෳ਺〣 Namespaceʢぢアふべʣ〜ڞ༗〜 ぀ 23/39
  24. veth ぐアのがやこがとʢ2.6.24/2008 ೥ʣ • Virtuozzo/OpenVZ ༝དྷ • ࡞੒『぀〝ର〝〟぀ぐアのがやこがと⿿ੜ੒《 ぁ぀ɻ〒〣ର〝〟぀ぐアのがやこがとؒ〜௨৴ ぇߦ⿸ʹ

    L2 〣ぷアぼ゚ • ର〣ยํぇりとぷɺยํぇぢアふべ〣 Namespace 〠ॴଐ《【぀ʢҟ〟぀ Namespace ؒ〜〟⿶〝௨৴ෆՄʣ 24/39
  25. ぶゑʢ2ʣ Network Namespace 〝 veth ぇ࡞〿ɺveth ぐアのがやこがとぇ Namespace 〠ॴଐ《【 〛௨৴『぀

    Network Namespace ぇ࡞぀〠〤 iproute2 ෇ଐ〣 ip netns ぢろアへ⿿࢖⿺〳『 1. Network namespace ぇ࡞぀ • Namespace ಺〣ぐアのがやこがと〣֬ೝ 2. veth ぐアのがやこがとらぎぇ࡞぀ 3. veth ぐアのがやこがと〣ยׂぁぇ Namespace 〠Ҡ『 4. veth ぐアのがやこがとらぎ〣〒ぁ〓ぁ〠ぎへ゛とぇׂ〿౰〛〛 Up 『぀ 5. veth らぎಉ࢜〜௨৴〜 ぀〈〝ぇ֬ೝ『぀ 25/39
  26. ຊ೔〣಺༰ ぢアふべ〝〤 ぢアふべ〣やきぐ゚てとふわ 2000 ೥ʙ2006 ೥〣ぢアふべք۾ ゆ゜なと〣ִ཭ ぢアふべ〣ぼひぷゞがぜ 2009ʙ2012 ೥〣ぢアふべք۾

    2013 ೥〣ぢアふべք ඇಛݖぢアふべʢUser namespaceʣ 2014 ೥Ҏ߱〣ぢアふべք۾ 〳〝〶 26/39
  27. 2009ʙ2012 ೥〣ぢアふべք۾ 2009 ೥ Memory, net_cls cgroupʢ2.6.29ʣ ゐゑ゙ɺぼひぷゞがぜ゙ぬがと੍ݶ 2010 ೥

    blkio cgroupʢ2.6.33ʣ ゅ゜ひぜぶみぐと〣 I/O ੍ݶ 2011 ೥ setns() てとふわぢが゚ʢ3.0ʣ Namespaceʢぢアふべʣ಺〜ゆ゜なとぇ࣮ߦ『぀ʢdocker exec / lxc execʣ 2012 ೥ perf_event cgroupʢ3.3ʣ Seccomp-based system call filtering (3.5) ɹ seccomp 〜೚ҙ〣てとふわぢが゚⿿やく゚の〜 ぀〽⿸〠〟〘〔 hugetlb cgroupʢ3.6ʣ ʢࡉ⿾⿶ػೳ௥Ճ〤ଞ〠〷⿴〿〳『ʣ 27/39
  28. ຊ೔〣಺༰ ぢアふべ〝〤 ぢアふべ〣やきぐ゚てとふわ 2000 ೥ʙ2006 ೥〣ぢアふべք۾ ゆ゜なと〣ִ཭ ぢアふべ〣ぼひぷゞがぜ 2009ʙ2012 ೥〣ぢアふべք۾

    2013 ೥〣ぢアふべք ඇಛݖぢアふべʢUser namespaceʣ 2014 ೥Ҏ߱〣ぢアふべք۾ 〳〝〶 28/39
  29. 2013 ೥〣ぢアふべք ぢアふべత〠ॏཁ〟೥ • 3.8 kernel 〤ݱࡏ࢖いぁ〛⿶぀ぢアふべ〣ओཁ〟ػೳ⿿ଗ〘〔ॏཁ〟゙゙がと User namespace ඇಛݖʢrootlessʣぢアふべ〣࣮ݱʢ։ൃ։࢝〤〟え〝

    2.6.23, 2007 ೥!!ʣ setns() શ Namespace 〠ର「〛࢖༻Մೳ〠〟〘〔 • Docker ݩ೥ʢ3 ݄〠 OSS 〝「〛ެ։ʣ • Checkpoint/Restart ػೳʢ3.11ʣ ⿴぀࣌఺〣ゆ゜なと〣ঢ়ଶぇอଘɺ࠶։〜 ぀ 29/39
  30. ຊ೔〣಺༰ ぢアふべ〝〤 ぢアふべ〣やきぐ゚てとふわ 2000 ೥ʙ2006 ೥〣ぢアふべք۾ ゆ゜なと〣ִ཭ ぢアふべ〣ぼひぷゞがぜ 2009ʙ2012 ೥〣ぢアふべք۾

    2013 ೥〣ぢアふべք ඇಛݖぢアふべʢUser namespaceʣ 2014 ೥Ҏ߱〣ぢアふべք۾ 〳〝〶 30/39
  31. User namespaceʢ3.8/2013 ೥ʣ • root ݖݶ〜ぢアふべぇىಈ『぀〝ɺぢアふべ಺〣 root 〤りとぷʢぢアふべ֎ʣ〣 root 〝

    ಉ」ݖݶぇ࣋〘〛⿶぀ • ぢアふべ (Namespace) ֎〝ผ〠 User namespace ಺〣 uid/gid ぇ࣋〛぀〽⿸〠〟〘 〔ʢぢアふべ֎〣 uid/gid 〝ぢアふべ಺〣 uid/gid ぇろひゃアそ『぀ʣ • User namespace Λ࢖͏ͱɺϗετͰ͸ಛݖΛ࣋ͨͳ͍ίϯςφ͕ىಈͰ͖Δ • User namespace ͸ҰൠϢʔβʔͰ࡞੒Մೳ 31/39
  32. ぶゑʢ3ʣ User Namespace ぇ࡞੒ ࠶〨 unshare ぢろアへぇ࢖⿶〳『 1. Ұൠゕがづが〜〤 User

    namespace Ҏ֎〣 namespace 〤࡞ぁ〟⿶〈〝ぇ֬ೝ 2. User namespace ぇ࡞〿てこ゚ぇ࣮ߦ 3. てこ゚〣ಈ࡞ݖݶぇ namespace ಺〝 namespace ֎⿾〾֬ೝ 4. namespace ಺〜やきぐ゚ぇ࡞੒「ɺnamespace ֎〜ॴ༗ݖぇ֬ೝ 5. User namespace ಺〜ଞ〣 Namespace ぇ࡞ぁ぀〈〝ぇ֬ೝ 6. ࡞〘〔ぢアふべ಺〜〤ぢアふべ಺〣ゆ゜なと〕々ݟ⿺぀〈〝ぇ֬ೝʢPID Namespaceʣ 32/39
  33. ຊ೔〣಺༰ ぢアふべ〝〤 ぢアふべ〣やきぐ゚てとふわ 2000 ೥ʙ2006 ೥〣ぢアふべք۾ ゆ゜なと〣ִ཭ ぢアふべ〣ぼひぷゞがぜ 2009ʙ2012 ೥〣ぢアふべք۾

    2013 ೥〣ぢアふべք ඇಛݖぢアふべʢUser namespaceʣ 2014 ೥Ҏ߱〣ぢアふべք۾ 〳〝〶 33/39
  34. 2014ʙ2016 ೥〣ぢアふべք۾ 2014 ೥ Overlayfsʢ3.18ʣ ゕぺざアやきぐ゚てとふわ〣࣮૷〜ɺぶく゛ぜぷ゙ぇॏ〢߹い【〛〧〝〙〣ぶく ゛ぜぷ゙〠ݟ【぀ 2014 ೥ cgroup

    v2, ext4 〠 project quota ػೳ௥Ճʢ4.5ʣ 2016 ೥ cgroup namespaceʢ4.6ʣ ぢアふべ〉〝〠ぢアふべઐ༻〣 cgroup ぇݟ【぀ 34/39
  35. 2017ʙ2019 ೥〣ぢアふべք۾ 2017 ೥ Namespaced file capabilitiesʢ4.14ʣ User namespace ಺〜

    file capability ⿿ઃఆ〜 ぀ 2018 ೥ ඇಛݖϚ΢ϯτʢ4.18ʣ User namespace ಺〜 FUSE ろげアぷ 2018 ೥ PSIʢ4.20ʣ ゐゑ゙ɺCPUɺIO 〣ෛՙ⿿૿େ「゙ぬがと⿿ෆ଍「〛⿶぀ঢ়گぇ؍ଌ 2018 ೥ seccomp trap to userspaceʢ5.0ʣ seccomp 〣ܾఆぇゕがづがとらがと〠౉「〛ॲཧ『぀ 2019 ೥ LSM stackingʢ5.1ʣ AppArmor on SELinux 〝⿾ʜ 2019 ೥ clone3() てとふわぢが゚ʢ5.3ʣ clone() てとふわぢが゚〜なひぷ〜 ぀や゘そ⿿ऴྃ「〔〔〶 2019 ೥ pidfdsʢ5.3ʣ PID ࠶ར༻໰୊〣ղܾ 35/39
  36. ぢアふべք۾〣〈ぁ⿾〾 〳〕〳〕৭ʑ〟ػೳ⿿ఏҊ《ぁ〛⿶〳『ɻLinux じがぼ゚〠ろがで《ぁ぀〷〣〷《ぁ〟⿶〷〣 〷⿴぀〜「〼⿸ɻ ShiftFS Ubuntu 19.04 〜࢖⿺぀ʢLinux じがぼ゚〠〤〳〕ろがで《ぁ〛⿶〟⿶ʣぢア ふべぐゐがで಺〣やきぐ゚〣

    uid/gid ぇぢアふべ〣࣮ߦゕがづが〠߹い【〛มߋ 『぀ Container Object ๯಄〜ݴ〘〔ʮLinux じがぼ゚〠〤ぢアふべ〝⿶⿸ػೳ〤⿴〿〳【えʯ ぇ࣮ݱ『぀ػೳ Time namespace ぢアふべ〉〝〠೔࣌ぇม⿺〾ぁ぀ 36/39
  37. ຊ೔〣಺༰ ぢアふべ〝〤 ぢアふべ〣やきぐ゚てとふわ 2000 ೥ʙ2006 ೥〣ぢアふべք۾ ゆ゜なと〣ִ཭ ぢアふべ〣ぼひぷゞがぜ 2009ʙ2012 ೥〣ぢアふべք۾

    2013 ೥〣ぢアふべք ඇಛݖぢアふべʢUser namespaceʣ 2014 ೥Ҏ߱〣ぢアふべք۾ 〳〝〶 37/39
  38. 〳〝〶 ྺ࢙ぇ〔〞〿〟⿿〾 Linux 〠࣮૷《ぁ〛⿶぀ぢアふべؔ࿈〣ػೳぇ΄Μͷগ͠঺հ「〳「〔 • Linux 〠〤ʮぢアふべʯ〝⿶⿸ػೳ〤〟。ɺ৭ʑ〟ػೳ〣૊〴߹い【〜ぢアふべ⿿࡞〾ぁ぀ • ゙ぬがと〉〝〠४උ《ぁ〔 Namespace

    ػೳ〜৭ʑ〟ִ཭ۭؒぇ࡞぀ • MountɺPIDɺNetworkɺUser Namespace 〝ؔ࿈『぀ػೳぇઆ໌ • ぢアふべ〠ؔ܎『぀ػೳ⿿〞え〞え Linux じがぼ゚〠௥Ճ《ぁɺࠓ〜〷ଟ਺〣ػೳ⿿ఏҊ 《ぁ〛⿶぀ 38/39
  39. 〉ਗ਼ௌ⿴〿⿿〝⿸〉》⿶〳「〔 38/39

  40. ࢀߟ • ぐアや゘ษڧձʮ[ぢアふべ〣ྺ࢙]Docker ⿿〜 ぀〳〜ʯࢿྉ • ୈ 2 ճ • ୈ

    3 ճ • ぢアふべٕज़ೖ໳ - Ծ૝Խ〝〣ҧ⿶ぇ஌〿ɺཁૉٕज़ぇ৮〘〛ֶ〱⿸ʢby hayajo_77 《 え / ごアでぺぎ Hubʣ • LXC 〜ֶ〫ぢアふべೖ໳ ʵܰྔԾ૝Խ؀ڥぇ࣮ݱ『぀ٕज़ (gihyo.jp) • Linux ぢアふべ〣಺෦ぇ஌あ⿸ • Linux ぢアふべ࠷৽৘ใʢ2013-06-01ʣ • History of containersʢS3hh’s Blogʣ 39/39