Upload
getdevnet
View
684
Download
0
Embed Size (px)
Citation preview
План
● Docker как тренд
● Зачем нужен Docker?
● Hypervisor vs. Container
● Контейнеры на Linux: почему Docker выстрелил?
● Демо!
● Docker на Windows и другое
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/
Что хочется
Придумать волшебную кнопку:“Опубликовать приложние где угодно”
“To build the ‘button’ that enables any application to be built and deployed on any server, anywhere.”
Продолжаем аналогиюГрузовой контейнер 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
LXCdocker
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.32 nginx 1.73 MySQL 5.3
1 init2 cron3 sshd4 ntp...
ns2
/, eth0, 1CPU, 512MB
1 Ruby 1.9.12 nginx 1.43 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
Dockerexecution 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
db1app1
app2
pull
pull
pull
Docker: versioning, reuse, sharingUnion mount, copy-on-write, AUFS, layers, ...
● Образ как VCS
● Экономия места
● Быстрый перенос/deploy
● Экономия памяти (“buffer cache is happy”)
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: обещания
#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: обещания
Клиентская часть 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: сегодня
● Внутри виртуальной машины общего назначения
● Boot2Docker (спец. образ VirtualBox)
Другие важные аспекты
● Один процесс или много процессов?
● Как связывать контейнеры?
● Монтирование томов
● Image trust
● Что делать с логами?
● Как ограничивать ресурсы (CPU, RAM)?