kirill.krinkin, Feb/2015
Краткое введение в Docker
Все использованнные картинки и наименования являются собственностью их владельцев
kirill.krinkin, Feb/2015
Основные темы
● Контейнерная виртуализация (в Linux)
● Docker и его назначение
● Компоненты
● Установка
● Контейнеры: запуск, останов, присоединение,
демонизация...
● Образы
● Использование для тестирования/отладки
kirill.krinkin, Feb/2015
Виртуальные машины и контейнеры
kirill.krinkin, Feb/2015
Примеры контейнеров
● OpenVZ
● Solaris Zones
● lxc
kirill.krinkin, Feb/2015
Использование контейнеров
● масштабируемое развертывание
многопользовательских сервисов
● легковесные «песочницы»
● изолированные окружения процессов
kirill.krinkin, Feb/2015
Назначение Docker
Взято с http://www.netpatch.ru/
kirill.krinkin, Feb/2015
Миссия
● Docker:
– простой и лекговесный путь от модели к
реальности
– минимизация риска падения приложений при
переносе из окружения разработки в «боевые
условия»
– Ускорение code->test->deploy->use
kirill.krinkin, Feb/2015
Компоненты
● Docker Client & Server
– CLI
– RESTFull API
● Images
– unionFS (каскадно-объединенное монтирование,
Knoppix)
● Registers
● Containers
kirill.krinkin, Feb/2015
Технические компоненты
● libcontainer format
● kernel namespaces
– fs isolation
– process isolation
– network isolation
● CoW FS
● логирование STDOUT, STDIN,STDERR
● CLI
● GUI (сторонние разработки)
kirill.krinkin, Feb/2015
Базовые механизмы Linux
kirill.krinkin, Feb/2015
Контейнер Docker
● Формат образа
● Набор стандартных операций
● Исполнительная среда
Метафора: контейнер содержит образ
программного обеспечения – груз, и над ним
возможны операции: создание, старт,
останов...
kirill.krinkin, Feb/2015
Применение
● ускорение инфраструктуры сборки
приложений
● выполнение standalone сервисов в разных
окружениях
● Jenkins CI
● многопользовательские PaaS
● легковесные песочницы
● SaaS
kirill.krinkin, Feb/2015
Установка
– ядро 3.8+
– x64
– Хранилище:
● Device Mapper
●
AUFS
● vfs
● btrfs
– curl
● sudo sh -c "echo deb https://get.docker.io/ubuntu docker main
>/etc/apt/sources.list.d/docker.list"
● curl -s https://get.docker.io/gpg | sudo apt-key add -
● sudo apt-get update && sudo apt-get install lxc-docker
● sudo docker info
kirill.krinkin, Feb/2015
Hello world #1
#docker
#docker version
#docker search tutorial
#docker pull learn/tutorial
#docker run echo "Hello world"
kirill.krinkin, Feb/2015
run & start
● -t псевдотерминал
● -i оставить STDIN открытым
● имя образа
● команда (например /bin/bash)
kirill.krinkin, Feb/2015
Основные команды
● create
● run
● start
● stop
● inspect
● diff
kirill.krinkin, Feb/2015
Образ
kirill.krinkin, Feb/2015
Создание образа
● Действия в контейнере + commit
●
Dockerfile + build
– FROM
– MAINTAINER
– RUN
– CMD
– EXPOSE
– VOLUME
– ...
ex:
#docker build --rm -t repo:image .
kirill.krinkin, Feb/2015
Аналогия с git
● docker diff
● docker commit
● docker pull
● docker push
kirill.krinkin, Feb/2015
Новинки
● Docker Swarm
● Docker Compose
kirill.krinkin, Feb/2015
Ссылки
● https://www.docker.com/
● https://www.docker.com/tryit/
● http://hub.docker.com
● http://www.netpatch.ru/research/docker/2014/03.
24-linux-docker-practical-guide.html
● James Turnbull «The Docker Book»

Кратчайшее введение в docker по-русски