21
Контейнеры “под капотом” Максим Жилинский

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

  • Upload
    -

  • View
    247

  • Download
    2

Embed Size (px)

Citation preview

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

Контейнеры“под капотом”

Максим Жилинский

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

Для могут использоваться контейнеры?

Локальная разработка и тестирование

Командная разработка

Continious Integration

Разворачивание контейнеров в production

PaaS

Ваш вариант?..

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

Задачи контейнеров

Изоляция окруженияОграничение ресурсов

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

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: Максим Жилинский: "Контейнеры: под капотом"

Изоляция окружения

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: Максим Жилинский: "Контейнеры: под капотом"

Namespaces

Process ID (PID)

Network

Mount

UTS (hostname)

Inter-process communication (IPC)

User

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

Linux process tree

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

Изоляция процессов

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

Изоляция файловой системы

Old-fashioned: chroot

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

Изоляция файловой системы

pivot_root спешит на помощь

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

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: Максим Жилинский: "Контейнеры: под капотом"

Union filesystems

UnionFS

AUFS

OverlayFS

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

Runtime filesystem – read-write

Application files added – read-only

Ubuntu Trusty (14.04) – read-only

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

Ограничение ресурсов

cgroupsInitial release in kernel 2.6.24 (2007)

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

cgroups subsystems

CPU

RAM

Disk bandwidth

Network bandwidth

more…

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

CPU subsystem heirarchy

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

CPU+Memory subsystem heirarchy

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

Реализации контейнеров linux

LXC

Docker

LMCTFY

OpenVZ

CloudFoundry Warden/Garden

Тысячи их!

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

Реализации в других OS

FreeBSD jails (2000)

OpenBSD/NetBSD sysjail (2007)

Solaris containers (2004)

HP-UX Containers (2007)

AIX WPARs (2007)

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

Спасибо за внимание