контейнерная революция
GetDev.Net
План
● Docker как тренд
● Зачем нужен Docker?
● Hypervisor vs. Container
● Контейнеры на Linux: почему Docker выстрелил?
● Демо!
● Docker на Windows и другое
Docker как тренд
*
Docker как тренд
Docker как тренд
Docker как тренд: GitHub
>23K GitHub repos*
*Сегодня больше vs. >43K “angular”, >61K “jquery”
Docker как тренд: Microsoft Azure
http://azure.microsoft.com/blog/2014/10/15/new-windows-server-containers-and-azure-support-for-docker/
Docker как тренд: “New Java”
http://blogs.gartner.com/david_m_smith/2014/10/21/docker-is-the-new-java/
Проблема
Развёртывание (deploy) приложений
сложнее, чем могло бы быть
http://localhost
http://продакшон.ru
http://продакшон.ru
Что хочется
Придумать волшебную кнопку:
“Опубликовать приложние где угодно”
“To build the ‘button’ that enables any application to be built and
deployed on any server, anywhere.”
Выдержки из
http://www.slideshare.net/dotCloud/why-docker
Проблема
Проблема (matrix of doom)
Проблема (аналогия)
Проблема (matrix of doom)
Проблема
А если вы на него бочку
катите, то это уже...
Решение: контейнеризация
Решение: контейнеризация
Почему бы не поступить так же с софтом?
Решение: Docker
Продолжаем аналогию
Грузовой контейнер Software container
Любое
наполнение
Содержит любой груз Содержит любые приложения
Любое место Склад, поезд, порт, корабль,
самолет, прицеп...
Ноутбук, VM, IaaS,выделенный
сервер, VPS, private cloud...
Изоляция Можно ставить наковальни на
бананы
Предотвращение конфликтов
библиотек и окружения
Эффективность Единые стандарты: известно как хранить и “двигать”
Разделение
обязанностей
Отправителю важен груз,
перевозчику - доставка
Разработчику важен код,
оператору - инфраструктура
Виртуальные машины?
VM: суть
Жир!
App 1 App 1’ App 2
Env 1 Env 1 Env 2
Гостевая ОС Гостевая ОС Гостевая ОС
ОС + гипервизор / аппаратный гипервизор
Железо
Полезная
нагрузка
VM: минусы
● Долгий старт
● Потребление ресурсов ⇨ низкая плотность
● Гостевая ОС думает, что она самая главная
● Невозможность каскадирования (nested VM)
● Накладные расходы: 5-15%
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/
Контейнеры: легкая виртуализация
App 1 App 1’ App 2
Env 1 Env 1 Env 2
Гостевая
ОС
Гостевая
ОС
Гостевая
ОС
ОС + гипервизор
Железо
A1 A1’ A1’
A2 A2’
A3 A3’ A3’
Extra libs
Env 1 Env 2
ОС + tools
Железо
Контейнеры — не новость
● Применяются уже лет 15
● chroot
● UNIX: Solaris zones, BSD jails, AIX WRAPS
● Windows: iCore Virtual Accounts, Parallels Containers
● Linux: Virtuozzo ⇨ OpenVZ, Linux V-Server, LXC, docker
Контейнеры — не новость
● Применяются уже лет 15
● chroot
● UNIX: Solaris zones, BSD jails, AIX WRAPS
● Windows: iCore Virtual Accounts, Parallels Containers
● Linux: Virtuozzo ⇨ OpenVZ, Linux V-Server, LXC, docker
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 ■
История контейнеров в 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-а
Kernel namespaces & cgroups
namespaces (pid, net, ipc, mnt, uts, user) —
изоляция процессов
cgroups — учёт и ограничение потребляемых ресурсов
Являются встроенными низкоуровневыми фишками (примитивами) ядра
+ AppArmor, SELinux, capabilities, GRSEC, PAX,... (security)
Kernel namespaces & cgroups
Ядро (Linux kernel)
Обычные процессы ns1
/, eth0, 2CPU, 1GB
1 Ruby 1.9.3
2 nginx 1.7
3 MySQL 5.3
1 init
2 cron
3 sshd
4 ntp
...
ns2
/, eth0, 1CPU, 512MB
1 Ruby 1.9.1
2 nginx 1.4
3 MySQL 5.0
OpenVZ vs. LXC vs. Docker vs. X
● Мощные production-ready инструменты
● Умеют делать всё что нужно (плюс-минус нюансы)
● Спрашивать, кто лучше = holywar
http://ru-openvz.livejournal.com/1970.html
Но почему Docker так выстрелил?
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
Docker
execution drivers
до версии 0.9
Docker - обёртка над
LXC
начиная с 0.9
введена абстракция
среды выполнения
Docker: application-centric
Цель — не создать изолированное
окружение (“легковесную виртуалку”), а
запустить приложение
“Докеризация” (dockerizing) — приведение приложения
к виду, пригодному для запуска в Docker-контейнере
Docker: versioning, reuse, sharing
Многослойная файловая система (union mount: AUFS и
др.) в совокупности с copy-on-write делает контейнеры
похожими на git-репозитории: ревизии, тэги, commit,
history, registry, pull, push, base image, DockerHub
Docker: versioning, reuse, sharing
scratch
ubuntu 14.04
mono 3.10
debian 7
mysql 5.5
ubuntu 14.04
apache2
php 5.5
wordpress1
mysql 5.5
mono 3.10 asp-vNext super-app
registry
db1
app1
app2
pull
pull
pull
Docker: versioning, reuse, sharing
Union mount, copy-on-write, AUFS, layers, ...
Docker: versioning, reuse, sharing
Union mount, copy-on-write, AUFS, layers, ...
● Образ как VCS
● Экономия места
● Быстрый
перенос/deploy
● Экономия памяти
(“buffer cache is happy”)
Docker: versioning, reuse, sharing
Docker: automated build
# Dockerfile
FROM ubuntu:14.04
ENV opa=123 key=eprst
RUN apt-get install -y mysql-server
ADD start.sh /
CMD [ “/start.sh” ]
Docker: deployment, tools
● Командная строка
● RESTful API
● импорт/экспорт образов, единый формат!
● Управление кластерами: compose, machine, swarm
● Поколение специальных ОС: Boot2Docker, CoreOS,
Ubuntu Snappy, Project Atomic
Демонстрация
Docker на Windows?
15 октября 2014 Microsoft и Docker сообщают о стратегическом
сотрудничестве
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”
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”
Docker на Windows: обещания
#2 Docker будет работать нативно под Windows
Docker на Windows: обещания
Клиентская часть docker.exe уже работает
TechEd EU 2014 Keynote, Марк Русси́нович (CTO, Azure)
http://youtu.be/ktrEh0rA9DY?t=1h19m46s
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”
Docker на Windows: обещания
#3 Мультиконтейнерные приложения: Windows и Linux
Docker на Windows: сегодня
● Внутри виртуальной машины общего назначения
● Boot2Docker (спец. образ VirtualBox)
Другие важные аспекты
● Один процесс или много процессов?
● Как связывать контейнеры?
● Монтирование томов
● Image trust
● Что делать с логами?
● Как ограничивать ресурсы (CPU, RAM)?
Docker контейнерная революция

Docker контейнерная революция

  • 1.
  • 2.
    План ● Docker кактренд ● Зачем нужен Docker? ● Hypervisor vs. Container ● Контейнеры на Linux: почему Docker выстрелил? ● Демо! ● Docker на Windows и другое
  • 3.
  • 4.
  • 5.
  • 6.
    Docker как тренд:GitHub >23K GitHub repos* *Сегодня больше vs. >43K “angular”, >61K “jquery”
  • 7.
    Docker как тренд:Microsoft Azure http://azure.microsoft.com/blog/2014/10/15/new-windows-server-containers-and-azure-support-for-docker/
  • 8.
    Docker как тренд:“New Java” http://blogs.gartner.com/david_m_smith/2014/10/21/docker-is-the-new-java/
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
    Что хочется Придумать волшебнуюкнопку: “Опубликовать приложние где угодно” “To build the ‘button’ that enables any application to be built and deployed on any server, anywhere.”
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
    Проблема А если вына него бочку катите, то это уже...
  • 20.
  • 21.
    Решение: контейнеризация Почему быне поступить так же с софтом?
  • 23.
  • 24.
    Продолжаем аналогию Грузовой контейнерSoftware container Любое наполнение Содержит любой груз Содержит любые приложения Любое место Склад, поезд, порт, корабль, самолет, прицеп... Ноутбук, VM, IaaS,выделенный сервер, VPS, private cloud... Изоляция Можно ставить наковальни на бананы Предотвращение конфликтов библиотек и окружения Эффективность Единые стандарты: известно как хранить и “двигать” Разделение обязанностей Отправителю важен груз, перевозчику - доставка Разработчику важен код, оператору - инфраструктура
  • 25.
  • 26.
    VM: суть Жир! App 1App 1’ App 2 Env 1 Env 1 Env 2 Гостевая ОС Гостевая ОС Гостевая ОС ОС + гипервизор / аппаратный гипервизор Железо Полезная нагрузка
  • 27.
    VM: минусы ● Долгийстарт ● Потребление ресурсов ⇨ низкая плотность ● Гостевая ОС думает, что она самая главная ● Невозможность каскадирования (nested VM) ● Накладные расходы: 5-15%
  • 28.
    VM: суть “Our cloud-basedIT 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/
  • 29.
    Контейнеры: легкая виртуализация App1 App 1’ App 2 Env 1 Env 1 Env 2 Гостевая ОС Гостевая ОС Гостевая ОС ОС + гипервизор Железо A1 A1’ A1’ A2 A2’ A3 A3’ A3’ Extra libs Env 1 Env 2 ОС + tools Железо
  • 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 SLIDESCONTAIN 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)
  • 35.
    Kernel namespaces &cgroups Ядро (Linux kernel) Обычные процессы ns1 /, eth0, 2CPU, 1GB 1 Ruby 1.9.3 2 nginx 1.7 3 MySQL 5.3 1 init 2 cron 3 sshd 4 ntp ... ns2 /, eth0, 1CPU, 512MB 1 Ruby 1.9.1 2 nginx 1.4 3 MySQL 5.0
  • 36.
    OpenVZ vs. LXCvs. 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
  • 38.
    Docker execution drivers до версии0.9 Docker - обёртка над LXC начиная с 0.9 введена абстракция среды выполнения
  • 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
  • 41.
    Docker: versioning, reuse,sharing scratch ubuntu 14.04 mono 3.10 debian 7 mysql 5.5 ubuntu 14.04 apache2 php 5.5 wordpress1 mysql 5.5 mono 3.10 asp-vNext super-app registry db1 app1 app2 pull pull pull
  • 42.
    Docker: versioning, reuse,sharing Union mount, copy-on-write, AUFS, layers, ...
  • 43.
    Docker: versioning, reuse,sharing Union mount, copy-on-write, AUFS, layers, ... ● Образ как VCS ● Экономия места ● Быстрый перенос/deploy ● Экономия памяти (“buffer cache is happy”)
  • 44.
  • 45.
    Docker: automated build #Dockerfile FROM ubuntu:14.04 ENV opa=123 key=eprst RUN apt-get install -y mysql-server ADD start.sh / CMD [ “/start.sh” ]
  • 46.
    Docker: deployment, tools ●Командная строка ● RESTful API ● импорт/экспорт образов, единый формат! ● Управление кластерами: compose, machine, swarm ● Поколение специальных ОС: Boot2Docker, CoreOS, Ubuntu Snappy, Project Atomic
  • 47.
  • 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)?