SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Downloaden Sie, um offline zu lesen
Юрий Трухин
cloud computing expert | InfoboxCloud
ytrukhin@infobox.ru
http://infoboxcloud.ru
Как не стать рабом облака?
в
PaaS 2.0 с Docker
О чем поговорим?
• Как работает Docker
• Как использовать Docker
• Dockerfile
• Новое в Docker 1.9
• Docker Swarm
• Docker Compose
• Контейнеры
• Как и где установить и попробовать
• UI для Docker – надо ли?
• Зачем все это???
Контейнеры
До 1960х годов большинство грузов перевозилось вперемешку
Что будет, если наковальни положить на мешки с бананами?
1/2 времени перевозки - погрузка, разгрузка, перегрузка
Сегодня 18 миллионов контейнеров - 90% мировой торговли
Контейнеры
Контейнеры внутри компьютера
Требуется Linux Kernel 3.8 и выше
Практически любое приложение может быть упаковано в контейнер
Приложение работает у пользователя так же, как и у разработчика
Как работает Docker
Клиент-серверное приложение. docker cli и Rest API
bootfs -> rootfs read only -> fs на запись
реестры: публичные (hub.docker.com) и приватные
контейнеры: при старте слой записи пуст
# docker info
Работа с контейнерами
sudo docker run -i -t ubuntu /bin/bash
Флаг -i оставляет STDIN открытым, даже, когда вы не присоединены к контейнеру. Флаг -t назначает
псевдо-tty контейнеру. Таким образом создается интерактивный интерфейс к контейнеру. Так же мы
указываем название образа (ubuntu — базовый образ) и шелл /bin/bash.
Подключение к контейнеру
docker exec -it container_name bash
Список запущенных контейнеров
docker ps
Контейнер-демон
docker run --name city -d ubuntu /bin/bash -c "while true; do echo hello world; sleep 1; done"
Перемещение данных между контейнером и хостом
docker cp <путь к данным на хосте> <имя контейнера>:<путь>
теперь… и в обратную сторону!
Монтируем диски
docker run -v /tmp:/root -t -i <имя образа>
Переезд контейнеров
Сохраним образ в файл
docker save имя_образа > ~/transfer.tar
Восстановим на другом хосте
Список образов на хосте
docker images
docker commit <id контейнера> <имя образа>
Коммит изменений в образ
docker load < /tmp/transfer.tar
docker push trukhinyuri/nginx
Отправим образ на hub.docker.com
Dockerfile
DSL с инструкциями для построения образов Docker
docker build -t trukhinyuri/nginx ~/static_web
docker build -t trukhinyuri/nginx  git@github.com:trukhinyuri/docker-static_web
Можно прямо из Git
docker build --no-cache -t trukhinyuri/nginx .
Отключение кеша сборок
Отладка Dockerfile
Можно создать контейнер из предпоследнего шага где упало и посмотреть в чем дело
docker run -i -t 066b799ea548 /bin/bash
docker logs <container_id>
docker logs --tail 10 <container_id> Последние 10 строк
docker logs --tail 0 -f <container_id> Что в логе сейчас
Шаблонизация с помощью кеша сборок
Обновлять только нужный слой
Инструкции Dockerfile: запуск процесса
CMD ["/bin/bash", “-l"] Какую команду запустить при старте контейнера
ENTRYPOINT ["/usr/sbin/nginx"] То же самое, но нельзя перегружать
docker run -d trukhinyuri/static_web -g "daemon off"
Параметр передается процессу в Entrypoint
Можно использовать вместе:
ENTRYPOINT ["/usr/sbin/nginx"]
CMD ["-h"]
Инструкции Dockerfile: откуда и кто
WORKDIR – откуда запускать CMD
USER – пользователь, от которого должен быть запущен образ
Инструкции Dockerfile: данные
VOLUME ["/opt/project"]
Точка монтирования тома. (пробрасываются через Union File System)
ADD software.lic /opt/application/software.lic
Добавляет файлы и папки из билд-окружения в образ. Источник - URL, файл или
директория
ADD http://wordpress.org/latest.zip /root/wordpress.zip
ADD latest.tar.gz /var/www/wordpress/
COPY conf.d/ /etc/apache2/
То же самое, но только для локальных данных
Отложенные триггеры, выполнятся когда образ используется как базовый для
другого образа
docker run -v /:/host ubuntu:ro ls /my_host
Как смонтировать всю файловую систему хоста в папку контейнера (не стоит так делать)
Инструкции Dockerfile: коммуникация
docker run -p 127.0.0.1:80:80
docker run -d -P --name web --link db:db trukhinyuri/webapp python app.py
docker run -p 80:80/udp
Проброс портов
Просмотр переменных окружения
Линковка
Рестарт контейнера при перезапуске хоста
Раньше мы писали скрипты для хоста, чтобы рестартовать контейнеры вручную.
И однажды снизошло чудо.
docker run --restart=always redis
docker run --restart=on-failure:5 redis
Поддержка IPv6
С версии Docker 1.5 можно указать во флаге —ipv6 адрес
IPv6
A еще сегодня мы запустили IPv6 для всех клиентов InfoboxCloud
и VPS от Infobox в Санкт-Петербурге!
Новое в Docker 1.9
Persistent Storage!
$ docker volume create -d flocker --name=myvolume
$ docker run -v myvolume:/data busybox sh -c "echo hello > /data/file.txt"
$ docker run -v myvolume:/data busybox sh -c "cat /data/file.txt"
Multi–host networking (через consul), пока настраивается грабельно
Позволяет строить приватные сети между физическими и
виртуальными хостами
ALM не влияет на возможность соединения
Не обязательно создавать контейнер до указания соединения (в
отличие от линковки)
$ docker network create frontend
$ docker run -itd --net=frontend --name web nginx
$ docker network create app
$ docker run -itd --name myapp --net=app <my application container>
$ docker network connect app web
Сети можно создавать отдельно от контейнеров
Docker Compose – просто запускать окружения
web:
  image: trukhinyuri/apache-php
  ports:
    - "80:80"
    - "443:443"
  volumes:
    - ./apache/www/:/var/www/
#    - ./apache/conf/sites-enabled/:/etc/apache2/sites-enabled/
  links:
    - db
  restart: always
db:
  image: centurylink/mysql:latest
  volumes:
    - ./mysql/conf/:/etc/mysql/conf.d/
    - ./mysql/data/:/var/lib/mysql/
  environment:
    MYSQL_ROOT_PASSWORD: **********
#    MYSQL_DATABASE: wordpress
  restart: always
dspbbalancer:
build: .
ports:
- 80:80
- 443:443
container_name: dspbbalancer
restart: always
docker-compose build
docker-compose up -d
docker-compose pull
docker-compose up -d
Docker Swarm – кластер из докеров
Провижнинг через docker-machine
Развертывание и масштабирование через Docker Compose
UI для Docker – Rancher и другие
Пока делают жизнь сложнее, а не упрощают ее
Как установить и где попробовать?
bash <(curl -s http://repository.sandbox.infoboxcloud.ru/scripts/docker/centos7/install.sh)
http://infoboxcloud.ru
Не помните все команды из доклада? :)
https://infoboxcloud.ru/community
В поиске введите docker
Развертывание докера и тулов на CentOS 7 упрощено до предела
“Разрешить управление ядром ОС” // CentOS 7
Q&A: Ваши вопросы?
Юрий Трухин
cloud computing expert | InfoboxCloud
ytrukhin@infobox.ru
(рад на них ответить!)
http://infoboxcloud.ru

Weitere ähnliche Inhalte

Was ist angesagt?

Введение в Docker
Введение в Docker Введение в Docker
Введение в Docker Andrey Markelov
 
Docker - быстро, просто, наглядно
Docker - быстро, просто, наглядноDocker - быстро, просто, наглядно
Docker - быстро, просто, наглядноFallenKain
 
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupДоклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupBadoo Development
 
Кратчайшее введение в docker по-русски
Кратчайшее введение в docker по-русскиКратчайшее введение в docker по-русски
Кратчайшее введение в docker по-русскиOSLL
 
Процесс разработки и тестирования с Docker + gitlab ci
Процесс разработки и тестирования с  Docker + gitlab ciПроцесс разработки и тестирования с  Docker + gitlab ci
Процесс разработки и тестирования с Docker + gitlab ciАлександр Сигачев
 
OpenStack и Docker: вместе и по отдельности
OpenStack и Docker: вместе и по отдельностиOpenStack и Docker: вместе и по отдельности
OpenStack и Docker: вместе и по отдельностиAndrey Markelov
 
TК°Conf. Микросервисы и Docker. Глеб Паньшин.
TК°Conf. Микросервисы и Docker. Глеб Паньшин.TК°Conf. Микросервисы и Docker. Глеб Паньшин.
TК°Conf. Микросервисы и Docker. Глеб Паньшин.TKConf
 
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)Александр Сигачев
 
RHEL 7. Контейнеры и Docker
RHEL 7. Контейнеры и DockerRHEL 7. Контейнеры и Docker
RHEL 7. Контейнеры и DockerAndrey Markelov
 
От Make к Ansible
От Make к AnsibleОт Make к Ansible
От Make к AnsibleIvan Grishaev
 
Teach your dockers to use CRanes
Teach your dockers to use CRanesTeach your dockers to use CRanes
Teach your dockers to use CRanesPavel Emelyanov
 
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...Badoo Development
 
Yet Another PaaS
Yet Another PaaSYet Another PaaS
Yet Another PaaSProvectus
 
Мониторь, автоматизируй Docker
Мониторь, автоматизируй DockerМониторь, автоматизируй Docker
Мониторь, автоматизируй DockerBadoo Development
 
Docker integration into Badoo
Docker integration into BadooDocker integration into Badoo
Docker integration into BadooAnton Turetsky
 
Проникновение в Docker с примерами
Проникновение в Docker с примерамиПроникновение в Docker с примерами
Проникновение в Docker с примерамиДмитрий Столяров
 
Андрей Михайлов. Vagrant. Быстрое развертывание среды
Андрей Михайлов. Vagrant. Быстрое развертывание средыАндрей Михайлов. Vagrant. Быстрое развертывание среды
Андрей Михайлов. Vagrant. Быстрое развертывание средыDrupalSib
 

Was ist angesagt? (20)

Docker. Основы
Docker. ОсновыDocker. Основы
Docker. Основы
 
Введение в Docker
Введение в Docker Введение в Docker
Введение в Docker
 
Docker - быстро, просто, наглядно
Docker - быстро, просто, наглядноDocker - быстро, просто, наглядно
Docker - быстро, просто, наглядно
 
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupДоклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
 
Кратчайшее введение в docker по-русски
Кратчайшее введение в docker по-русскиКратчайшее введение в docker по-русски
Кратчайшее введение в docker по-русски
 
Процесс разработки и тестирования с Docker + gitlab ci
Процесс разработки и тестирования с  Docker + gitlab ciПроцесс разработки и тестирования с  Docker + gitlab ci
Процесс разработки и тестирования с Docker + gitlab ci
 
OpenStack и Docker: вместе и по отдельности
OpenStack и Docker: вместе и по отдельностиOpenStack и Docker: вместе и по отдельности
OpenStack и Docker: вместе и по отдельности
 
TК°Conf. Микросервисы и Docker. Глеб Паньшин.
TК°Conf. Микросервисы и Docker. Глеб Паньшин.TК°Conf. Микросервисы и Docker. Глеб Паньшин.
TК°Conf. Микросервисы и Docker. Глеб Паньшин.
 
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)
 
RHEL 7. Контейнеры и Docker
RHEL 7. Контейнеры и DockerRHEL 7. Контейнеры и Docker
RHEL 7. Контейнеры и Docker
 
От Make к Ansible
От Make к AnsibleОт Make к Ansible
От Make к Ansible
 
Teach your dockers to use CRanes
Teach your dockers to use CRanesTeach your dockers to use CRanes
Teach your dockers to use CRanes
 
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
 
Yet Another PaaS
Yet Another PaaSYet Another PaaS
Yet Another PaaS
 
Введение в Docker
Введение в DockerВведение в Docker
Введение в Docker
 
Docker networking
Docker networkingDocker networking
Docker networking
 
Мониторь, автоматизируй Docker
Мониторь, автоматизируй DockerМониторь, автоматизируй Docker
Мониторь, автоматизируй Docker
 
Docker integration into Badoo
Docker integration into BadooDocker integration into Badoo
Docker integration into Badoo
 
Проникновение в Docker с примерами
Проникновение в Docker с примерамиПроникновение в Docker с примерами
Проникновение в Docker с примерами
 
Андрей Михайлов. Vagrant. Быстрое развертывание среды
Андрей Михайлов. Vagrant. Быстрое развертывание средыАндрей Михайлов. Vagrant. Быстрое развертывание среды
Андрей Михайлов. Vagrant. Быстрое развертывание среды
 

Ähnlich wie Как не стать рабом облака. PaaS 2.0 с 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
 
OpenStack и Docker: вместе и по отдельности
OpenStack и Docker: вместе и по отдельностиOpenStack и Docker: вместе и по отдельности
OpenStack и Docker: вместе и по отдельностиOpenStackRussia
 
Окружение разработчика - от виртуализации к контейнеризации
Окружение разработчика - от виртуализации к контейнеризацииОкружение разработчика - от виртуализации к контейнеризации
Окружение разработчика - от виртуализации к контейнеризацииAlexander Kirillov
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годAnton Turetsky
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годBadoo Development
 
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Ontico
 
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
Локальное окружение на DockerМихаил Бакулин
 
Codeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышлоCodeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышлоCOMAQA.BY
 
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
 
Тестовый стенд для большого числа проектов на Docker
Тестовый стенд для большого числа проектов на DockerТестовый стенд для большого числа проектов на Docker
Тестовый стенд для большого числа проектов на DockerAnton Maksimov
 
My talk on Docker, Youcon 2015
My talk on Docker, Youcon 2015My talk on Docker, Youcon 2015
My talk on Docker, Youcon 2015Alex Chistyakov
 
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальноеОмские ИТ-субботники
 
Docker с чем едят и для чего используют
Docker с чем едят и для чего используютDocker с чем едят и для чего используют
Docker с чем едят и для чего используютITCrowd Almaty
 

Ähnlich wie Как не стать рабом облака. PaaS 2.0 с 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 в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через год
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через год
 
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
 
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
 
Docker
DockerDocker
Docker
 
Codeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышлоCodeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышло
 
Docker в development окружение
Docker в development окружениеDocker в development окружение
Docker в development окружение
 
Docker
DockerDocker
Docker
 
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
 
Тестовый стенд для большого числа проектов на Docker
Тестовый стенд для большого числа проектов на DockerТестовый стенд для большого числа проектов на Docker
Тестовый стенд для большого числа проектов на Docker
 
Docker&Azure
Docker&AzureDocker&Azure
Docker&Azure
 
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
 
My talk on Docker, Youcon 2015
My talk on Docker, Youcon 2015My talk on Docker, Youcon 2015
My talk on Docker, Youcon 2015
 
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
 
Docker с чем едят и для чего используют
Docker с чем едят и для чего используютDocker с чем едят и для чего используют
Docker с чем едят и для чего используют
 
Docker + DockStation
Docker + DockStationDocker + DockStation
Docker + DockStation
 

Как не стать рабом облака. PaaS 2.0 с Docker

  • 1. Юрий Трухин cloud computing expert | InfoboxCloud ytrukhin@infobox.ru http://infoboxcloud.ru Как не стать рабом облака? в PaaS 2.0 с Docker
  • 2. О чем поговорим? • Как работает Docker • Как использовать Docker • Dockerfile • Новое в Docker 1.9 • Docker Swarm • Docker Compose • Контейнеры • Как и где установить и попробовать • UI для Docker – надо ли? • Зачем все это???
  • 3. Контейнеры До 1960х годов большинство грузов перевозилось вперемешку Что будет, если наковальни положить на мешки с бананами? 1/2 времени перевозки - погрузка, разгрузка, перегрузка Сегодня 18 миллионов контейнеров - 90% мировой торговли
  • 4. Контейнеры Контейнеры внутри компьютера Требуется Linux Kernel 3.8 и выше Практически любое приложение может быть упаковано в контейнер Приложение работает у пользователя так же, как и у разработчика
  • 5. Как работает Docker Клиент-серверное приложение. docker cli и Rest API bootfs -> rootfs read only -> fs на запись реестры: публичные (hub.docker.com) и приватные контейнеры: при старте слой записи пуст # docker info
  • 6. Работа с контейнерами sudo docker run -i -t ubuntu /bin/bash Флаг -i оставляет STDIN открытым, даже, когда вы не присоединены к контейнеру. Флаг -t назначает псевдо-tty контейнеру. Таким образом создается интерактивный интерфейс к контейнеру. Так же мы указываем название образа (ubuntu — базовый образ) и шелл /bin/bash. Подключение к контейнеру docker exec -it container_name bash Список запущенных контейнеров docker ps Контейнер-демон docker run --name city -d ubuntu /bin/bash -c "while true; do echo hello world; sleep 1; done" Перемещение данных между контейнером и хостом docker cp <путь к данным на хосте> <имя контейнера>:<путь> теперь… и в обратную сторону! Монтируем диски docker run -v /tmp:/root -t -i <имя образа>
  • 7. Переезд контейнеров Сохраним образ в файл docker save имя_образа > ~/transfer.tar Восстановим на другом хосте Список образов на хосте docker images docker commit <id контейнера> <имя образа> Коммит изменений в образ docker load < /tmp/transfer.tar docker push trukhinyuri/nginx Отправим образ на hub.docker.com
  • 8. Dockerfile DSL с инструкциями для построения образов Docker docker build -t trukhinyuri/nginx ~/static_web docker build -t trukhinyuri/nginx git@github.com:trukhinyuri/docker-static_web Можно прямо из Git docker build --no-cache -t trukhinyuri/nginx . Отключение кеша сборок
  • 9. Отладка Dockerfile Можно создать контейнер из предпоследнего шага где упало и посмотреть в чем дело docker run -i -t 066b799ea548 /bin/bash docker logs <container_id> docker logs --tail 10 <container_id> Последние 10 строк docker logs --tail 0 -f <container_id> Что в логе сейчас
  • 10. Шаблонизация с помощью кеша сборок Обновлять только нужный слой
  • 11. Инструкции Dockerfile: запуск процесса CMD ["/bin/bash", “-l"] Какую команду запустить при старте контейнера ENTRYPOINT ["/usr/sbin/nginx"] То же самое, но нельзя перегружать docker run -d trukhinyuri/static_web -g "daemon off" Параметр передается процессу в Entrypoint Можно использовать вместе: ENTRYPOINT ["/usr/sbin/nginx"] CMD ["-h"]
  • 12. Инструкции Dockerfile: откуда и кто WORKDIR – откуда запускать CMD USER – пользователь, от которого должен быть запущен образ
  • 13. Инструкции Dockerfile: данные VOLUME ["/opt/project"] Точка монтирования тома. (пробрасываются через Union File System) ADD software.lic /opt/application/software.lic Добавляет файлы и папки из билд-окружения в образ. Источник - URL, файл или директория ADD http://wordpress.org/latest.zip /root/wordpress.zip ADD latest.tar.gz /var/www/wordpress/ COPY conf.d/ /etc/apache2/ То же самое, но только для локальных данных Отложенные триггеры, выполнятся когда образ используется как базовый для другого образа docker run -v /:/host ubuntu:ro ls /my_host Как смонтировать всю файловую систему хоста в папку контейнера (не стоит так делать)
  • 14. Инструкции Dockerfile: коммуникация docker run -p 127.0.0.1:80:80 docker run -d -P --name web --link db:db trukhinyuri/webapp python app.py docker run -p 80:80/udp Проброс портов Просмотр переменных окружения Линковка
  • 15. Рестарт контейнера при перезапуске хоста Раньше мы писали скрипты для хоста, чтобы рестартовать контейнеры вручную. И однажды снизошло чудо. docker run --restart=always redis docker run --restart=on-failure:5 redis
  • 16. Поддержка IPv6 С версии Docker 1.5 можно указать во флаге —ipv6 адрес IPv6 A еще сегодня мы запустили IPv6 для всех клиентов InfoboxCloud и VPS от Infobox в Санкт-Петербурге!
  • 17. Новое в Docker 1.9 Persistent Storage! $ docker volume create -d flocker --name=myvolume $ docker run -v myvolume:/data busybox sh -c "echo hello > /data/file.txt" $ docker run -v myvolume:/data busybox sh -c "cat /data/file.txt" Multi–host networking (через consul), пока настраивается грабельно Позволяет строить приватные сети между физическими и виртуальными хостами ALM не влияет на возможность соединения Не обязательно создавать контейнер до указания соединения (в отличие от линковки) $ docker network create frontend $ docker run -itd --net=frontend --name web nginx $ docker network create app $ docker run -itd --name myapp --net=app <my application container> $ docker network connect app web Сети можно создавать отдельно от контейнеров
  • 18. Docker Compose – просто запускать окружения web:   image: trukhinyuri/apache-php   ports:     - "80:80"     - "443:443"   volumes:     - ./apache/www/:/var/www/ #    - ./apache/conf/sites-enabled/:/etc/apache2/sites-enabled/   links:     - db   restart: always db:   image: centurylink/mysql:latest   volumes:     - ./mysql/conf/:/etc/mysql/conf.d/     - ./mysql/data/:/var/lib/mysql/   environment:     MYSQL_ROOT_PASSWORD: ********** #    MYSQL_DATABASE: wordpress   restart: always dspbbalancer: build: . ports: - 80:80 - 443:443 container_name: dspbbalancer restart: always docker-compose build docker-compose up -d docker-compose pull docker-compose up -d
  • 19. Docker Swarm – кластер из докеров Провижнинг через docker-machine Развертывание и масштабирование через Docker Compose
  • 20. UI для Docker – Rancher и другие Пока делают жизнь сложнее, а не упрощают ее
  • 21. Как установить и где попробовать? bash <(curl -s http://repository.sandbox.infoboxcloud.ru/scripts/docker/centos7/install.sh) http://infoboxcloud.ru Не помните все команды из доклада? :) https://infoboxcloud.ru/community В поиске введите docker Развертывание докера и тулов на CentOS 7 упрощено до предела “Разрешить управление ядром ОС” // CentOS 7
  • 22. Q&A: Ваши вопросы? Юрий Трухин cloud computing expert | InfoboxCloud ytrukhin@infobox.ru (рад на них ответить!) http://infoboxcloud.ru