Максим Жилинский: "Контейнеры: под капотом"
Transcript of Максим Жилинский: "Контейнеры: под капотом"
![Page 1: Максим Жилинский: "Контейнеры: под капотом"](https://reader033.fdocument.pub/reader033/viewer/2022051300/58edccdb1a28ab8c0b8b46ad/html5/thumbnails/1.jpg)
Контейнеры“под капотом”
Максим Жилинский
![Page 2: Максим Жилинский: "Контейнеры: под капотом"](https://reader033.fdocument.pub/reader033/viewer/2022051300/58edccdb1a28ab8c0b8b46ad/html5/thumbnails/2.jpg)
![Page 3: Максим Жилинский: "Контейнеры: под капотом"](https://reader033.fdocument.pub/reader033/viewer/2022051300/58edccdb1a28ab8c0b8b46ad/html5/thumbnails/3.jpg)
Для могут использоваться контейнеры?
Локальная разработка и тестирование
Командная разработка
Continious Integration
Разворачивание контейнеров в production
PaaS
Ваш вариант?..
![Page 4: Максим Жилинский: "Контейнеры: под капотом"](https://reader033.fdocument.pub/reader033/viewer/2022051300/58edccdb1a28ab8c0b8b46ad/html5/thumbnails/4.jpg)
Задачи контейнеров
Изоляция окруженияОграничение ресурсов
![Page 5: Максим Жилинский: "Контейнеры: под капотом"](https://reader033.fdocument.pub/reader033/viewer/2022051300/58edccdb1a28ab8c0b8b46ad/html5/thumbnails/5.jpg)
man 2 fork
NOTES… Since version 2.3.3, rather than invoking the kernel's fork() system call, the glibc fork() wrapper that is provided as part of the NPTL threading implementation invokes clone(2) with flags that provide the same effect as the traditional system call.
![Page 6: Максим Жилинский: "Контейнеры: под капотом"](https://reader033.fdocument.pub/reader033/viewer/2022051300/58edccdb1a28ab8c0b8b46ad/html5/thumbnails/6.jpg)
Изоляция окружения
Linux Namespaces2.4.19 (2002)
2.6.19 (2006)
2.6.24 (2008)
2.6.29(2009)
3.3(2012)
3.8(2013)
Mount ✔ ✔ ✔ ✔ ✔ ✔UTS ✔ ✔ ✔ ✔ ✔IPC ✔ ✔ ✔ ✔ ✔PID ✔ ✔ ✔ ✔
Network ✔ ✔ ✔User ✔
![Page 7: Максим Жилинский: "Контейнеры: под капотом"](https://reader033.fdocument.pub/reader033/viewer/2022051300/58edccdb1a28ab8c0b8b46ad/html5/thumbnails/7.jpg)
Namespaces
Process ID (PID)
Network
Mount
UTS (hostname)
Inter-process communication (IPC)
User
![Page 8: Максим Жилинский: "Контейнеры: под капотом"](https://reader033.fdocument.pub/reader033/viewer/2022051300/58edccdb1a28ab8c0b8b46ad/html5/thumbnails/8.jpg)
Linux process tree
![Page 9: Максим Жилинский: "Контейнеры: под капотом"](https://reader033.fdocument.pub/reader033/viewer/2022051300/58edccdb1a28ab8c0b8b46ad/html5/thumbnails/9.jpg)
Изоляция процессов
![Page 10: Максим Жилинский: "Контейнеры: под капотом"](https://reader033.fdocument.pub/reader033/viewer/2022051300/58edccdb1a28ab8c0b8b46ad/html5/thumbnails/10.jpg)
Изоляция файловой системы
Old-fashioned: chroot
![Page 11: Максим Жилинский: "Контейнеры: под капотом"](https://reader033.fdocument.pub/reader033/viewer/2022051300/58edccdb1a28ab8c0b8b46ad/html5/thumbnails/11.jpg)
Изоляция файловой системы
pivot_root спешит на помощь
![Page 12: Максим Жилинский: "Контейнеры: под капотом"](https://reader033.fdocument.pub/reader033/viewer/2022051300/58edccdb1a28ab8c0b8b46ad/html5/thumbnails/12.jpg)
Union mount
foo/|-- common| `-- foo|-- foo-1`-- foo-child |-- foo-child-1 `-- foo-child-2
bar/|-- bar-1|-- bar-2|-- bar-child| `-- bar-child-1`-- common `-- bar
result/|-- bar-1|-- bar-2|-- bar-child| `-- bar-child-1|-- common| |-- bar| `-- foo|-- foo-1`-- foo-child |-- foo-child-1 `-- foo-child-2
+ =
![Page 13: Максим Жилинский: "Контейнеры: под капотом"](https://reader033.fdocument.pub/reader033/viewer/2022051300/58edccdb1a28ab8c0b8b46ad/html5/thumbnails/13.jpg)
Union filesystems
UnionFS
AUFS
OverlayFS
…
![Page 14: Максим Жилинский: "Контейнеры: под капотом"](https://reader033.fdocument.pub/reader033/viewer/2022051300/58edccdb1a28ab8c0b8b46ad/html5/thumbnails/14.jpg)
Runtime filesystem – read-write
Application files added – read-only
Ubuntu Trusty (14.04) – read-only
![Page 15: Максим Жилинский: "Контейнеры: под капотом"](https://reader033.fdocument.pub/reader033/viewer/2022051300/58edccdb1a28ab8c0b8b46ad/html5/thumbnails/15.jpg)
Ограничение ресурсов
cgroupsInitial release in kernel 2.6.24 (2007)
![Page 16: Максим Жилинский: "Контейнеры: под капотом"](https://reader033.fdocument.pub/reader033/viewer/2022051300/58edccdb1a28ab8c0b8b46ad/html5/thumbnails/16.jpg)
cgroups subsystems
CPU
RAM
Disk bandwidth
Network bandwidth
more…
![Page 17: Максим Жилинский: "Контейнеры: под капотом"](https://reader033.fdocument.pub/reader033/viewer/2022051300/58edccdb1a28ab8c0b8b46ad/html5/thumbnails/17.jpg)
CPU subsystem heirarchy
![Page 18: Максим Жилинский: "Контейнеры: под капотом"](https://reader033.fdocument.pub/reader033/viewer/2022051300/58edccdb1a28ab8c0b8b46ad/html5/thumbnails/18.jpg)
CPU+Memory subsystem heirarchy
![Page 19: Максим Жилинский: "Контейнеры: под капотом"](https://reader033.fdocument.pub/reader033/viewer/2022051300/58edccdb1a28ab8c0b8b46ad/html5/thumbnails/19.jpg)
Реализации контейнеров linux
LXC
Docker
LMCTFY
OpenVZ
CloudFoundry Warden/Garden
Тысячи их!
![Page 20: Максим Жилинский: "Контейнеры: под капотом"](https://reader033.fdocument.pub/reader033/viewer/2022051300/58edccdb1a28ab8c0b8b46ad/html5/thumbnails/20.jpg)
Реализации в других OS
FreeBSD jails (2000)
OpenBSD/NetBSD sysjail (2007)
Solaris containers (2004)
HP-UX Containers (2007)
AIX WPARs (2007)
![Page 21: Максим Жилинский: "Контейнеры: под капотом"](https://reader033.fdocument.pub/reader033/viewer/2022051300/58edccdb1a28ab8c0b8b46ad/html5/thumbnails/21.jpg)
Спасибо за внимание