Материалы со встречи:
https://getdev.net/Event/docker
Docker: зачем нужен и почему выстрелил? Контейнеры против виртуальных машин - кто лучше? Docker на Windows: как и когда? А также демо: создание и deploy контейнера на ваших глазах
2. План
● Docker как тренд
● Зачем нужен Docker?
● Hypervisor vs. Container
● Контейнеры на Linux: почему Docker выстрелил?
● Демо!
● Docker на Windows и другое
13. Что хочется
Придумать волшебную кнопку:
“Опубликовать приложние где угодно”
“To build the ‘button’ that enables any application to be built and
deployed on any server, anywhere.”
27. VM: минусы
● Долгий старт
● Потребление ресурсов ⇨ низкая плотность
● Гостевая ОС думает, что она самая главная
● Невозможность каскадирования (nested VM)
● Накладные расходы: 5-15%
28. VM: суть
“Our cloud-based IT world is founded on hypervisors. It doesn’t have to be
that way – and, some say, it shouldn’t be. Containers can deliver more
services using the same hardware you’re now using for virtual machines”
http://blog.smartbear.com/web-monitoring/why-containers-instead-of-hypervisors/
30. Контейнеры — не новость
● Применяются уже лет 15
● chroot
● UNIX: Solaris zones, BSD jails, AIX WRAPS
● Windows: iCore Virtual Accounts, Parallels Containers
● Linux: Virtuozzo ⇨ OpenVZ, Linux V-Server, LXC, docker
31. Контейнеры — не новость
● Применяются уже лет 15
● chroot
● UNIX: Solaris zones, BSD jails, AIX WRAPS
● Windows: iCore Virtual Accounts, Parallels Containers
● Linux: Virtuozzo ⇨ OpenVZ, Linux V-Server, LXC, docker
32. THE FOLLOWING SLIDES CONTAIN
COARSE LANGUAGE -- INCLUDING
BUT NOT LIMITED TO “LINUX”,
“KERNEL”, “CONSOLE” -- AND DUE TO
THEIR CONTENTS SHOULD NOT BE
VIEWED BY ANYONE ■
33. История контейнеров в Linux
2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
mount namespaces
Virtuozzo (custom kernel) OpenVZ
cgroups
LXC
docker
kernel 3.8
rocket
(redesign)
namespaces
раннее средневековье возрождение новое время
уменьшение patchset-а
34. Kernel namespaces & cgroups
namespaces (pid, net, ipc, mnt, uts, user) —
изоляция процессов
cgroups — учёт и ограничение потребляемых ресурсов
Являются встроенными низкоуровневыми фишками (примитивами) ядра
+ AppArmor, SELinux, capabilities, GRSEC, PAX,... (security)
36. OpenVZ vs. LXC vs. Docker vs. X
● Мощные production-ready инструменты
● Умеют делать всё что нужно (плюс-минус нюансы)
● Спрашивать, кто лучше = holywar
http://ru-openvz.livejournal.com/1970.html
Но почему Docker так выстрелил?
37. Docker, кто же ты?
● Сам не является технологией контейнеризации
● Поддерживает разные среды выполнения
● Docker — система упаковки и доставки приложений
“Pack, ship, and run any application as a lightweight, portable, self-sufficient
container that runs virtually anywhere” (James Bottomley, CTO, Parallels)
http://stackoverflow.com/q/17989306
39. Docker: application-centric
Цель — не создать изолированное
окружение (“легковесную виртуалку”), а
запустить приложение
“Докеризация” (dockerizing) — приведение приложения
к виду, пригодному для запуска в Docker-контейнере
40. Docker: versioning, reuse, sharing
Многослойная файловая система (union mount: AUFS и
др.) в совокупности с copy-on-write делает контейнеры
похожими на git-репозитории: ревизии, тэги, commit,
history, registry, pull, push, base image, DockerHub
43. Docker: versioning, reuse, sharing
Union mount, copy-on-write, AUFS, layers, ...
● Образ как VCS
● Экономия места
● Быстрый
перенос/deploy
● Экономия памяти
(“buffer cache is happy”)
48. Docker на Windows?
15 октября 2014 Microsoft и Docker сообщают о стратегическом
сотрудничестве
49. Docker на Windows: обещания
#1 В следующий Windows Server (Q3 2015) будут
добавлены аналоги namespaces/cgroups
Docker PR: “a Microsoft led initiative to add container capabilities (e.g. the
equivalent of namespaces and cgroups) to Windows”
Docker Roadmap: “The next Microsoft Windows Server will ship with
primitives to support container-based process isolation and resource
management”
50. Docker на Windows: обещания
#2 Docker будет работать нативно под Windows
Docker PR: “a new Docker Windows Daemon, which will be built in open
source under the aegis and governance of the Docker project”
Microsoft PR: “Docker Engine, the open source runtime that builds, runs and
orchestrates containers, will work with the next release of Windows Server”
51. Docker на Windows: обещания
#2 Docker будет работать нативно под Windows
52. Docker на Windows: обещания
Клиентская часть docker.exe уже работает
TechEd EU 2014 Keynote, Марк Русси́нович (CTO, Azure)
http://youtu.be/ktrEh0rA9DY?t=1h19m46s
53. Docker на Windows: обещания
#3 Мультиконтейнерные приложения: Windows и Linux
Docker PR: “The overall Docker platform, which will also be extended (in the
open) to support both the Docker Windows Daemon and the Docker Linux
Daemon”
Microsoft PR: “Microsoft has also announced its contribution to Docker’s open
orchestration APIs, ensuring portability for multicontainer applications”
54. Docker на Windows: обещания
#3 Мультиконтейнерные приложения: Windows и Linux
55. Docker на Windows: сегодня
● Внутри виртуальной машины общего назначения
● Boot2Docker (спец. образ VirtualBox)
56. Другие важные аспекты
● Один процесс или много процессов?
● Как связывать контейнеры?
● Монтирование томов
● Image trust
● Что делать с логами?
● Как ограничивать ресурсы (CPU, RAM)?