SlideShare uma empresa Scribd logo
1 de 57
Baixar para ler offline
контейнерная революция
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 контейнерная революция

Mais conteúdo relacionado

Mais procurados

TК°Conf. Микросервисы и Docker. Глеб Паньшин.
TК°Conf. Микросервисы и Docker. Глеб Паньшин.TК°Conf. Микросервисы и Docker. Глеб Паньшин.
TК°Conf. Микросервисы и Docker. Глеб Паньшин.TKConf
 
Кратчайшее введение в docker по-русски
Кратчайшее введение в docker по-русскиКратчайшее введение в docker по-русски
Кратчайшее введение в docker по-русскиOSLL
 
Депрокрастинируем Docker: контейнеры здесь и сейчас
Депрокрастинируем Docker: контейнеры здесь и сейчасДепрокрастинируем Docker: контейнеры здесь и сейчас
Депрокрастинируем Docker: контейнеры здесь и сейчасRuslan Sharipov
 
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupДоклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupBadoo Development
 
My talk on Docker from Moscow Django Meetup #25
My talk on Docker from Moscow Django Meetup #25My talk on Docker from Moscow Django Meetup #25
My talk on Docker from Moscow Django Meetup #25Alex Chistyakov
 
Тестовый стенд для большого числа проектов на Docker
Тестовый стенд для большого числа проектов на DockerТестовый стенд для большого числа проектов на Docker
Тестовый стенд для большого числа проектов на DockerAnton Maksimov
 
OpenStack и Docker: вместе и по отдельности
OpenStack и Docker: вместе и по отдельностиOpenStack и Docker: вместе и по отдельности
OpenStack и Docker: вместе и по отдельностиAndrey Markelov
 
Teach your dockers to use CRanes
Teach your dockers to use CRanesTeach your dockers to use CRanes
Teach your dockers to use CRanesPavel Emelyanov
 
Как не стать рабом облака. PaaS 2.0 с Docker
Как не стать рабом облака. PaaS 2.0 с DockerКак не стать рабом облака. PaaS 2.0 с Docker
Как не стать рабом облака. PaaS 2.0 с Dockertrukhinyuri
 
Процесс разработки и тестирования с Docker + gitlab ci
Процесс разработки и тестирования с  Docker + gitlab ciПроцесс разработки и тестирования с  Docker + gitlab ci
Процесс разработки и тестирования с Docker + gitlab ciАлександр Сигачев
 
SPb Jenkins Meetup #5. Jenkins in da Cloud. Внутренности
SPb Jenkins Meetup #5. Jenkins in da Cloud. ВнутренностиSPb Jenkins Meetup #5. Jenkins in da Cloud. Внутренности
SPb Jenkins Meetup #5. Jenkins in da Cloud. ВнутренностиOleg Nenashev
 
RHEL 7. Контейнеры и Docker
RHEL 7. Контейнеры и DockerRHEL 7. Контейнеры и Docker
RHEL 7. Контейнеры и DockerAndrey Markelov
 
Docker с чем едят и для чего используют
Docker с чем едят и для чего используютDocker с чем едят и для чего используют
Docker с чем едят и для чего используютITCrowd Almaty
 
Docker: from understanding to production
Docker: from understanding to productionDocker: from understanding to production
Docker: from understanding to productionAnton Turetsky
 
Docker Containers orchestrators: Kubernetes vs. Swarm
Docker Containers orchestrators: Kubernetes vs. SwarmDocker Containers orchestrators: Kubernetes vs. Swarm
Docker Containers orchestrators: Kubernetes vs. SwarmDmitry Lazarenko
 
Непрерывная интеграция Python-проектов в Яндексе
Непрерывная интеграция Python-проектов в ЯндексеНепрерывная интеграция Python-проектов в Яндексе
Непрерывная интеграция Python-проектов в ЯндексеAndrey Kazarinov
 
Elasticsearch(java) fluentbit(c++) fluentd(ruby) kibana(javascript)
Elasticsearch(java) fluentbit(c++)    fluentd(ruby) kibana(javascript)Elasticsearch(java) fluentbit(c++)    fluentd(ruby) kibana(javascript)
Elasticsearch(java) fluentbit(c++) fluentd(ruby) kibana(javascript)Александр Сигачев
 
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальноеОмские ИТ-субботники
 

Mais procurados (20)

TК°Conf. Микросервисы и Docker. Глеб Паньшин.
TК°Conf. Микросервисы и Docker. Глеб Паньшин.TК°Conf. Микросервисы и Docker. Глеб Паньшин.
TК°Conf. Микросервисы и Docker. Глеб Паньшин.
 
Кратчайшее введение в docker по-русски
Кратчайшее введение в docker по-русскиКратчайшее введение в docker по-русски
Кратчайшее введение в docker по-русски
 
Docker 1.9
Docker 1.9Docker 1.9
Docker 1.9
 
Депрокрастинируем Docker: контейнеры здесь и сейчас
Депрокрастинируем Docker: контейнеры здесь и сейчасДепрокрастинируем Docker: контейнеры здесь и сейчас
Депрокрастинируем Docker: контейнеры здесь и сейчас
 
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupДоклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
 
My talk on Docker from Moscow Django Meetup #25
My talk on Docker from Moscow Django Meetup #25My talk on Docker from Moscow Django Meetup #25
My talk on Docker from Moscow Django Meetup #25
 
Тестовый стенд для большого числа проектов на Docker
Тестовый стенд для большого числа проектов на DockerТестовый стенд для большого числа проектов на Docker
Тестовый стенд для большого числа проектов на Docker
 
OpenStack и Docker: вместе и по отдельности
OpenStack и Docker: вместе и по отдельностиOpenStack и Docker: вместе и по отдельности
OpenStack и Docker: вместе и по отдельности
 
Teach your dockers to use CRanes
Teach your dockers to use CRanesTeach your dockers to use CRanes
Teach your dockers to use CRanes
 
Как не стать рабом облака. PaaS 2.0 с Docker
Как не стать рабом облака. PaaS 2.0 с DockerКак не стать рабом облака. PaaS 2.0 с Docker
Как не стать рабом облака. PaaS 2.0 с Docker
 
Процесс разработки и тестирования с Docker + gitlab ci
Процесс разработки и тестирования с  Docker + gitlab ciПроцесс разработки и тестирования с  Docker + gitlab ci
Процесс разработки и тестирования с Docker + gitlab ci
 
SPb Jenkins Meetup #5. Jenkins in da Cloud. Внутренности
SPb Jenkins Meetup #5. Jenkins in da Cloud. ВнутренностиSPb Jenkins Meetup #5. Jenkins in da Cloud. Внутренности
SPb Jenkins Meetup #5. Jenkins in da Cloud. Внутренности
 
RHEL 7. Контейнеры и Docker
RHEL 7. Контейнеры и DockerRHEL 7. Контейнеры и Docker
RHEL 7. Контейнеры и Docker
 
Jenkins в docker in mesos in ...
Jenkins в docker in mesos in ...Jenkins в docker in mesos in ...
Jenkins в docker in mesos in ...
 
Docker с чем едят и для чего используют
Docker с чем едят и для чего используютDocker с чем едят и для чего используют
Docker с чем едят и для чего используют
 
Docker: from understanding to production
Docker: from understanding to productionDocker: from understanding to production
Docker: from understanding to production
 
Docker Containers orchestrators: Kubernetes vs. Swarm
Docker Containers orchestrators: Kubernetes vs. SwarmDocker Containers orchestrators: Kubernetes vs. Swarm
Docker Containers orchestrators: Kubernetes vs. Swarm
 
Непрерывная интеграция Python-проектов в Яндексе
Непрерывная интеграция Python-проектов в ЯндексеНепрерывная интеграция Python-проектов в Яндексе
Непрерывная интеграция Python-проектов в Яндексе
 
Elasticsearch(java) fluentbit(c++) fluentd(ruby) kibana(javascript)
Elasticsearch(java) fluentbit(c++)    fluentd(ruby) kibana(javascript)Elasticsearch(java) fluentbit(c++)    fluentd(ruby) kibana(javascript)
Elasticsearch(java) fluentbit(c++) fluentd(ruby) kibana(javascript)
 
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
 

Destaque

Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)Ontico
 
Mind Mapping, или как заставить свой мозг работать лучше
Mind Mapping, или как заставить свой мозг работать лучшеMind Mapping, или как заставить свой мозг работать лучше
Mind Mapping, или как заставить свой мозг работать лучшеGetDev.NET
 
Docker introduction
Docker introductionDocker introduction
Docker introductiondotCloud
 
Docker 101: Introduction to Docker
Docker 101: Introduction to DockerDocker 101: Introduction to Docker
Docker 101: Introduction to DockerDocker, Inc.
 
Web Client Performance
Web Client PerformanceWeb Client Performance
Web Client PerformanceGetDev.NET
 
Enabling Docker Applications on OpenStack (using Murano)
Enabling Docker Applications on OpenStack (using Murano) Enabling Docker Applications on OpenStack (using Murano)
Enabling Docker Applications on OpenStack (using Murano) Mirantis IT Russia
 
Chingis Sandanov. Container virtualization
Chingis Sandanov. Container virtualizationChingis Sandanov. Container virtualization
Chingis Sandanov. Container virtualizationDrupalSib
 
2. Vagin. Linux containers. June 01, 2013
2. Vagin. Linux containers. June 01, 20132. Vagin. Linux containers. June 01, 2013
2. Vagin. Linux containers. June 01, 2013ru-fedora-moscow-2013
 
Docker в виртуальной среде VMware
Docker в виртуальной среде VMwareDocker в виртуальной среде VMware
Docker в виртуальной среде VMwareAndrey Konovalov
 
JMeter, Docker sitting in a tree
JMeter, Docker sitting in a treeJMeter, Docker sitting in a tree
JMeter, Docker sitting in a treesrivaths_sankaran
 
Testing with Docker
Testing with DockerTesting with Docker
Testing with Dockertoffermann
 
Docker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous IntegrationDocker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous IntegrationCOMAQA.BY
 
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Ontico
 
Docker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous IntegrationDocker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous IntegrationSQALab
 
Comprehensive Monitoring for Docker
Comprehensive Monitoring for DockerComprehensive Monitoring for Docker
Comprehensive Monitoring for DockerChristian Beedgen
 
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)Badoo Development
 
Mastering JIRA Workflow - Atlassian Summit 2010
Mastering JIRA Workflow - Atlassian Summit 2010Mastering JIRA Workflow - Atlassian Summit 2010
Mastering JIRA Workflow - Atlassian Summit 2010Atlassian
 

Destaque (19)

Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
 
Mind Mapping, или как заставить свой мозг работать лучше
Mind Mapping, или как заставить свой мозг работать лучшеMind Mapping, или как заставить свой мозг работать лучше
Mind Mapping, или как заставить свой мозг работать лучше
 
Docker In Bank Unrated
Docker In Bank UnratedDocker In Bank Unrated
Docker In Bank Unrated
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Docker 101: Introduction to Docker
Docker 101: Introduction to DockerDocker 101: Introduction to Docker
Docker 101: Introduction to Docker
 
Web Client Performance
Web Client PerformanceWeb Client Performance
Web Client Performance
 
Enabling Docker Applications on OpenStack (using Murano)
Enabling Docker Applications on OpenStack (using Murano) Enabling Docker Applications on OpenStack (using Murano)
Enabling Docker Applications on OpenStack (using Murano)
 
Chingis Sandanov. Container virtualization
Chingis Sandanov. Container virtualizationChingis Sandanov. Container virtualization
Chingis Sandanov. Container virtualization
 
2. Vagin. Linux containers. June 01, 2013
2. Vagin. Linux containers. June 01, 20132. Vagin. Linux containers. June 01, 2013
2. Vagin. Linux containers. June 01, 2013
 
Docker в виртуальной среде VMware
Docker в виртуальной среде VMwareDocker в виртуальной среде VMware
Docker в виртуальной среде VMware
 
JMeter, Docker sitting in a tree
JMeter, Docker sitting in a treeJMeter, Docker sitting in a tree
JMeter, Docker sitting in a tree
 
Testing with Docker
Testing with DockerTesting with Docker
Testing with Docker
 
Docker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous IntegrationDocker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous Integration
 
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
 
Docker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous IntegrationDocker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous Integration
 
Comprehensive Monitoring for Docker
Comprehensive Monitoring for DockerComprehensive Monitoring for Docker
Comprehensive Monitoring for Docker
 
Docker Started
Docker StartedDocker Started
Docker Started
 
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
 
Mastering JIRA Workflow - Atlassian Summit 2010
Mastering JIRA Workflow - Atlassian Summit 2010Mastering JIRA Workflow - Atlassian Summit 2010
Mastering JIRA Workflow - Atlassian Summit 2010
 

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

Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"
Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"
Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"LogeekNightUkraine
 
Окружение разработчика - от виртуализации к контейнеризации
Окружение разработчика - от виртуализации к контейнеризацииОкружение разработчика - от виртуализации к контейнеризации
Окружение разработчика - от виртуализации к контейнеризацииAlexander Kirillov
 
OpenStack и Docker: вместе и по отдельности
OpenStack и Docker: вместе и по отдельностиOpenStack и Docker: вместе и по отдельности
OpenStack и Docker: вместе и по отдельностиOpenStackRussia
 
Docker и оркетсрация контейнеров в облаке Azure
Docker и оркетсрация контейнеров в облаке AzureDocker и оркетсрация контейнеров в облаке Azure
Docker и оркетсрация контейнеров в облаке AzureStas Pavlov
 
Локальное окружение на Docker
Локальное окружение на DockerЛокальное окружение на Docker
Локальное окружение на DockerМихаил Бакулин
 
Yet Another PaaS
Yet Another PaaSYet Another PaaS
Yet Another PaaSProvectus
 
DevCon School. Azure Microservices and Containers
DevCon School. Azure Microservices and ContainersDevCon School. Azure Microservices and Containers
DevCon School. Azure Microservices and ContainersStas Pavlov
 
Dev ops.events.v tymoshyk-20-oct-2016
Dev ops.events.v tymoshyk-20-oct-2016Dev ops.events.v tymoshyk-20-oct-2016
Dev ops.events.v tymoshyk-20-oct-2016Vad Tymoshyk
 
Codeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышлоCodeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышлоCOMAQA.BY
 
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел ТихомировРазвёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел ТихомировOpenVZ
 
Docker-контейнеризация: от local до production
Docker-контейнеризация: от local до productionDocker-контейнеризация: от local до production
Docker-контейнеризация: от local до productionRoman Kudlay
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5Provectus
 
Виртуализация как инструмент разработчика
Виртуализация как инструмент разработчикаВиртуализация как инструмент разработчика
Виртуализация как инструмент разработчикаAlexander Kirillov
 
Виртуализация как инструмент разработчика
Виртуализация как инструмент разработчикаВиртуализация как инструмент разработчика
Виртуализация как инструмент разработчикаOpen-IT
 
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs..."How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...Provectus
 
Клуб Большого мозга - DevOps Evening
Клуб Большого мозга - DevOps EveningКлуб Большого мозга - DevOps Evening
Клуб Большого мозга - DevOps EveningArtjoker
 
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)Ontico
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годAnton Turetsky
 

Semelhante a Docker контейнерная революция (20)

Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"
Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"
Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"
 
Окружение разработчика - от виртуализации к контейнеризации
Окружение разработчика - от виртуализации к контейнеризацииОкружение разработчика - от виртуализации к контейнеризации
Окружение разработчика - от виртуализации к контейнеризации
 
OpenStack и Docker: вместе и по отдельности
OpenStack и Docker: вместе и по отдельностиOpenStack и Docker: вместе и по отдельности
OpenStack и Docker: вместе и по отдельности
 
Docker и оркетсрация контейнеров в облаке Azure
Docker и оркетсрация контейнеров в облаке AzureDocker и оркетсрация контейнеров в облаке Azure
Docker и оркетсрация контейнеров в облаке Azure
 
Локальное окружение на Docker
Локальное окружение на DockerЛокальное окружение на Docker
Локальное окружение на Docker
 
Yet Another PaaS
Yet Another PaaSYet Another PaaS
Yet Another PaaS
 
DevCon School. Azure Microservices and Containers
DevCon School. Azure Microservices and ContainersDevCon School. Azure Microservices and Containers
DevCon School. Azure Microservices and Containers
 
Dev ops.events.v tymoshyk-20-oct-2016
Dev ops.events.v tymoshyk-20-oct-2016Dev ops.events.v tymoshyk-20-oct-2016
Dev ops.events.v tymoshyk-20-oct-2016
 
Codeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышлоCodeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышло
 
Docker&Azure
Docker&AzureDocker&Azure
Docker&Azure
 
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел ТихомировРазвёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
 
Docker
DockerDocker
Docker
 
Docker-контейнеризация: от local до production
Docker-контейнеризация: от local до productionDocker-контейнеризация: от local до production
Docker-контейнеризация: от local до production
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
 
Виртуализация как инструмент разработчика
Виртуализация как инструмент разработчикаВиртуализация как инструмент разработчика
Виртуализация как инструмент разработчика
 
Виртуализация как инструмент разработчика
Виртуализация как инструмент разработчикаВиртуализация как инструмент разработчика
Виртуализация как инструмент разработчика
 
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs..."How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
 
Клуб Большого мозга - DevOps Evening
Клуб Большого мозга - DevOps EveningКлуб Большого мозга - DevOps Evening
Клуб Большого мозга - DevOps Evening
 
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через год
 

Mais de GetDev.NET

Leap Motion - игрушка с заделом на будущее
Leap Motion - игрушка с заделом на будущееLeap Motion - игрушка с заделом на будущее
Leap Motion - игрушка с заделом на будущееGetDev.NET
 
Гирлянда для программистов
Гирлянда для программистовГирлянда для программистов
Гирлянда для программистовGetDev.NET
 
Что нового в Visual Studio 2015
Что нового в Visual Studio 2015Что нового в Visual Studio 2015
Что нового в Visual Studio 2015GetDev.NET
 
Windows 10 для пользователей и разработчиков
Windows 10 для пользователей и разработчиковWindows 10 для пользователей и разработчиков
Windows 10 для пользователей и разработчиковGetDev.NET
 
PhoneGap для мобильного разработчика - глубокое погружение без ОЗК
PhoneGap для мобильного разработчика - глубокое погружение без ОЗКPhoneGap для мобильного разработчика - глубокое погружение без ОЗК
PhoneGap для мобильного разработчика - глубокое погружение без ОЗКGetDev.NET
 
ASP.NET Web API
ASP.NET Web APIASP.NET Web API
ASP.NET Web APIGetDev.NET
 
Что нового в Visual Studio 2013
Что нового в Visual Studio 2013Что нового в Visual Studio 2013
Что нового в Visual Studio 2013GetDev.NET
 
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...GetDev.NET
 
Lego Mindstorms
Lego MindstormsLego Mindstorms
Lego MindstormsGetDev.NET
 
Особенности мобильной платформы Windows Phone 8
Особенности мобильной платформы Windows Phone 8Особенности мобильной платформы Windows Phone 8
Особенности мобильной платформы Windows Phone 8GetDev.NET
 
Async Javascript
Async JavascriptAsync Javascript
Async JavascriptGetDev.NET
 
XAML - язык разметки приложений
XAML - язык разметки приложенийXAML - язык разметки приложений
XAML - язык разметки приложенийGetDev.NET
 
Dynamic Language Runtime
Dynamic Language RuntimeDynamic Language Runtime
Dynamic Language RuntimeGetDev.NET
 
JavaScript: хороший тон клиентской разработки
JavaScript: хороший тон клиентской разработкиJavaScript: хороший тон клиентской разработки
JavaScript: хороший тон клиентской разработкиGetDev.NET
 
Roslyn - компилятор как сервис
Roslyn - компилятор как сервисRoslyn - компилятор как сервис
Roslyn - компилятор как сервисGetDev.NET
 
ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCGetDev.NET
 

Mais de GetDev.NET (20)

Go
GoGo
Go
 
Leap Motion - игрушка с заделом на будущее
Leap Motion - игрушка с заделом на будущееLeap Motion - игрушка с заделом на будущее
Leap Motion - игрушка с заделом на будущее
 
Гирлянда для программистов
Гирлянда для программистовГирлянда для программистов
Гирлянда для программистов
 
Что нового в Visual Studio 2015
Что нового в Visual Studio 2015Что нового в Visual Studio 2015
Что нового в Visual Studio 2015
 
Windows 10 для пользователей и разработчиков
Windows 10 для пользователей и разработчиковWindows 10 для пользователей и разработчиков
Windows 10 для пользователей и разработчиков
 
PhoneGap для мобильного разработчика - глубокое погружение без ОЗК
PhoneGap для мобильного разработчика - глубокое погружение без ОЗКPhoneGap для мобильного разработчика - глубокое погружение без ОЗК
PhoneGap для мобильного разработчика - глубокое погружение без ОЗК
 
ASP.NET Web API
ASP.NET Web APIASP.NET Web API
ASP.NET Web API
 
Что нового в Visual Studio 2013
Что нового в Visual Studio 2013Что нового в Visual Studio 2013
Что нового в Visual Studio 2013
 
AngularJS
AngularJSAngularJS
AngularJS
 
TypeScript
TypeScriptTypeScript
TypeScript
 
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
 
Lego Mindstorms
Lego MindstormsLego Mindstorms
Lego Mindstorms
 
Особенности мобильной платформы Windows Phone 8
Особенности мобильной платформы Windows Phone 8Особенности мобильной платформы Windows Phone 8
Особенности мобильной платформы Windows Phone 8
 
Async Javascript
Async JavascriptAsync Javascript
Async Javascript
 
XAML - язык разметки приложений
XAML - язык разметки приложенийXAML - язык разметки приложений
XAML - язык разметки приложений
 
Dynamic Language Runtime
Dynamic Language RuntimeDynamic Language Runtime
Dynamic Language Runtime
 
JavaScript: хороший тон клиентской разработки
JavaScript: хороший тон клиентской разработкиJavaScript: хороший тон клиентской разработки
JavaScript: хороший тон клиентской разработки
 
Roslyn - компилятор как сервис
Roslyn - компилятор как сервисRoslyn - компилятор как сервис
Roslyn - компилятор как сервис
 
ASP.NET MVC 4
ASP.NET MVC 4ASP.NET MVC 4
ASP.NET MVC 4
 
ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVC
 

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

  • 2. План ● Docker как тренд ● Зачем нужен Docker? ● Hypervisor vs. Container ● Контейнеры на Linux: почему Docker выстрелил? ● Демо! ● Docker на Windows и другое
  • 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/
  • 13. Что хочется Придумать волшебную кнопку: “Опубликовать приложние где угодно” “To build the ‘button’ that enables any application to be built and deployed on any server, anywhere.”
  • 19. Проблема А если вы на него бочку катите, то это уже...
  • 21. Решение: контейнеризация Почему бы не поступить так же с софтом?
  • 22.
  • 24. Продолжаем аналогию Грузовой контейнер Software container Любое наполнение Содержит любой груз Содержит любые приложения Любое место Склад, поезд, порт, корабль, самолет, прицеп... Ноутбук, VM, IaaS,выделенный сервер, VPS, private cloud... Изоляция Можно ставить наковальни на бананы Предотвращение конфликтов библиотек и окружения Эффективность Единые стандарты: известно как хранить и “двигать” Разделение обязанностей Отправителю важен груз, перевозчику - доставка Разработчику важен код, оператору - инфраструктура
  • 26. VM: суть Жир! App 1 App 1’ App 2 Env 1 Env 1 Env 2 Гостевая ОС Гостевая ОС Гостевая ОС ОС + гипервизор / аппаратный гипервизор Железо Полезная нагрузка
  • 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/
  • 29. Контейнеры: легкая виртуализация 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 Железо
  • 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)
  • 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. 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
  • 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”)
  • 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
  • 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)?