ݺߣ

ݺߣShare a Scribd company logo
Контейнеры
“под капотом”
Максим Жилинский
1
2
Для могут использоваться контейнеры?
Локальная разработка и тестирование
Командная разработка
Continious Integration
Разворачивание контейнеров в production
PaaS
Ваш вариант?..
3
Задачи контейнеров
Изоляция окружения
Ограничение ресурсов
4
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.
5
Изоляция окружения
Linux Namespaces
2.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 ✔6
Namespaces
Process ID (PID)
Network
Mount
UTS (hostname)
Inter-process communication (IPC)
User
7
Linux process tree
8
Изоляция процессов
9
Изоляция файловой системы
Old-fashioned: chroot
10
Изоляция файловой системы
pivot_root спешит на помощь
11
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
+ =
12
Union filesystems
UnionFS
AUFS
OverlayFS
…
13
Runtime filesystem – read-write
Application files added – read-only
Ubuntu Trusty (14.04) – read-only
14
Ограничение ресурсов
cgroups
Initial release in kernel 2.6.24 (2007)
15
cgroups subsystems
CPU
RAM
Disk bandwidth
Network bandwidth
more…
16
CPU subsystem heirarchy
17
CPU+Memory subsystem heirarchy
18
Реализации контейнеров linux
LXC
Docker
LMCTFY
OpenVZ
CloudFoundry Warden/Garden
Тысячи их!
19
Реализации в других OS
FreeBSD jails (2000)
OpenBSD/NetBSD sysjail (2007)
Solaris containers (2004)
HP-UX Containers (2007)
AIX WPARs (2007)
20
Спасибо за внимание
21

More Related Content

Максим Жилинский: "Контейнеры: под капотом"