Top Banner
контейнерная революция GetDev.Net
57

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

Jul 16, 2015

Download

Technology

GetDev.NET
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Docker контейнерная революция

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

GetDev.Net

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

План

● Docker как тренд

● Зачем нужен Docker?

● Hypervisor vs. Container

● Контейнеры на Linux: почему Docker выстрелил?

● Демо!

● Docker на Windows и другое

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

Docker как тренд

*

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

Docker как тренд

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

Docker как тренд

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

Docker как тренд: GitHub

>23K GitHub repos**Сегодня больше vs. >43K “angular”, >61K “jquery”

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

Docker как тренд: Microsoft Azure

http://azure.microsoft.com/blog/2014/10/15/new-windows-server-containers-and-azure-support-for-docker/

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

Docker как тренд: “New Java”

http://blogs.gartner.com/david_m_smith/2014/10/21/docker-is-the-new-java/

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

Проблема

Развёртывание (deploy) приложений сложнее, чем могло бы быть

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

http://localhost

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

http://продакшон.ru

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

http://продакшон.ru

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

Что хочется

Придумать волшебную кнопку:“Опубликовать приложние где угодно”

“To build the ‘button’ that enables any application to be built and deployed on any server, anywhere.”

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

Выдержки из http://www.slideshare.net/dotCloud/why-docker

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

Проблема

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

Проблема (matrix of doom)

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

Проблема (аналогия)

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

Проблема (matrix of doom)

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

ПроблемаА если вы на него бочку катите, то это уже...

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

Решение: контейнеризация

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

Решение: контейнеризация

Почему бы не поступить так же с софтом?

Page 22: Docker контейнерная революция
Page 23: Docker контейнерная революция

Решение: Docker

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

Продолжаем аналогиюГрузовой контейнер Software container

Любое наполнение

Содержит любой груз Содержит любые приложения

Любое место Склад, поезд, порт, корабль, самолет, прицеп...

Ноутбук, VM, IaaS,выделенный сервер, VPS, private cloud...

Изоляция Можно ставить наковальни на бананы

Предотвращение конфликтов библиотек и окружения

Эффективность Единые стандарты: известно как хранить и “двигать”

Разделение обязанностей

Отправителю важен груз, перевозчику - доставка

Разработчику важен код, оператору - инфраструктура

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

Виртуальные машины?

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

VM: суть

Жир!

App 1 App 1’ App 2

Env 1 Env 1 Env 2

Гостевая ОС Гостевая ОС Гостевая ОС

ОС + гипервизор / аппаратный гипервизор

Железо

Полезная нагрузка

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

VM: минусы

● Долгий старт

● Потребление ресурсов ⇨ низкая плотность

● Гостевая ОС думает, что она самая главная

● Невозможность каскадирования (nested VM)

● Накладные расходы: 5-15%

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

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/

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

Контейнеры: легкая виртуализация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

Железо

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

Контейнеры — не новость● Применяются уже лет 15

● chroot

● UNIX: Solaris zones, BSD jails, AIX WRAPS

● Windows: iCore Virtual Accounts, Parallels Containers

● Linux: Virtuozzo ⇨ OpenVZ, Linux V-Server, LXC, docker

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

Контейнеры — не новость● Применяются уже лет 15

● chroot

● UNIX: Solaris zones, BSD jails, AIX WRAPS

● Windows: iCore Virtual Accounts, Parallels Containers

● Linux: Virtuozzo ⇨ OpenVZ, Linux V-Server, LXC, docker

Page 32: 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 ■

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

История контейнеров в 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-а

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

Kernel namespaces & cgroups

namespaces (pid, net, ipc, mnt, uts, user) — изоляция процессов

cgroups — учёт и ограничение потребляемых ресурсов

Являются встроенными низкоуровневыми фишками (примитивами) ядра

+ AppArmor, SELinux, capabilities, GRSEC, PAX,... (security)

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

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

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

OpenVZ vs. LXC vs. Docker vs. X

● Мощные production-ready инструменты

● Умеют делать всё что нужно (плюс-минус нюансы)

● Спрашивать, кто лучше = holywar

http://ru-openvz.livejournal.com/1970.html

Но почему Docker так выстрелил?

Page 37: 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

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

Dockerexecution drivers

до версии 0.9 Docker - обёртка надLXC

начиная с 0.9введена абстракциясреды выполнения

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

Docker: application-centric

Цель — не создать изолированное окружение (“легковесную виртуалку”), а

запустить приложение

“Докеризация” (dockerizing) — приведение приложения к виду, пригодному для запуска в Docker-контейнере

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

Docker: versioning, reuse, sharing

Многослойная файловая система (union mount: AUFS и др.) в совокупности с copy-on-write делает контейнеры похожими на git-репозитории: ревизии, тэги, commit,

history, registry, pull, push, base image, DockerHub

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

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

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

Docker: versioning, reuse, sharingUnion mount, copy-on-write, AUFS, layers, ...

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

Docker: versioning, reuse, sharingUnion mount, copy-on-write, AUFS, layers, ...

● Образ как VCS

● Экономия места

● Быстрый перенос/deploy

● Экономия памяти (“buffer cache is happy”)

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

Docker: versioning, reuse, sharing

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

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” ]

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

Docker: deployment, tools

● Командная строка

● RESTful API

● импорт/экспорт образов, единый формат!

● Управление кластерами: compose, machine, swarm

● Поколение специальных ОС: Boot2Docker, CoreOS,

Ubuntu Snappy, Project Atomic

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

Демонстрация

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

Docker на Windows?15 октября 2014 Microsoft и Docker сообщают о стратегическом сотрудничестве

Page 49: 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”

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

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”

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

Docker на Windows: обещания

#2 Docker будет работать нативно под Windows

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

Docker на Windows: обещания

Клиентская часть docker.exe уже работает

TechEd EU 2014 Keynote, Марк Русси ́нович (CTO, Azure)

http://youtu.be/ktrEh0rA9DY?t=1h19m46s

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

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”

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

Docker на Windows: обещания

#3 Мультиконтейнерные приложения: Windows и Linux

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

Docker на Windows: сегодня

● Внутри виртуальной машины общего назначения

● Boot2Docker (спец. образ VirtualBox)

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

Другие важные аспекты

● Один процесс или много процессов?

● Как связывать контейнеры?

● Монтирование томов

● Image trust

● Что делать с логами?

● Как ограничивать ресурсы (CPU, RAM)?

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