Кратчайшее введение в docker по-русски
TRANSCRIPT
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»