Docker - быстро, просто, наглядно

Preview:

Citation preview

Что такое докерПлатформа, которая поможет:1)Упаковать приложение и его зависимости в

контейнер2)Перенести его на любой сервер, на котором

установлен докер3)Запустить контейнер с приложением за доли

секунды

Создатели видят это так

Это виртуальная машина?Нет. Оно выглядит и работает как виртуальная

машина, но:Докер намного быстрееСам контейнер меньше в размерах

Зачем это нужноПростой способ доставки продукта по

серверамКонтейнер защищает продукт от нюансов

конфигурации каждого принимающего сервера

Контейнер защищает сервер от багов и дырв безопасности продукта

И докер очень простойЗапустить Ubuntu и выполнить в ней echodocker run ubuntu echo “hello virtual world”

Запустить CentOS с башем и подключиться кего терминалуdocker run -ti CentOS /bin/bash

Очень-очень простойЗапустить nodejs-app контейнер в бэкграундеdocker run –d nodejs-app

Как приоткрыть контейнер

Открыть конкретные порты (host:container)docker run -p 8080:80 –p 4443:443 … …

Или сразу всеdocker run –P … …

Подключить FSПодключить папку файловой системы хоста

для чтенияdocker run –v ~/www:/var/www:ro … …

Сделать контейнер-хранилище, и раздавать егофайловую систему остальнымdocker create -v /temp/db --name dbhostdocker run --volumes-from dbhost …

Как его раздобытьНативно работает на ubuntu, debian, CentOS,

etc.apt-get install docker.iocurl -sSL https://get.docker.com/ | sh

Для Windows и Mac OS Xboot2docker

VM и DockerКонтейнер != виртульная машинаВиртуальная машина эмулирует всё, в т.ч.

железоКонтейнер изолирует процессы,

пользователейи файловую систему

ТерминологияСлой (layer) – слепок файловой системыОбраз (image) – readonly слой + ссылка на

родительский imageБазовый образ – образ без родителяКонтейнер – запущенный образ + writeable

слой файловой системы + метаданные

Различия запуска

Как создать/сохранить образВзять готовый с репозитория и изменить

docker pull, docker commitСобрать из Dockerfile на основе

существующегоdocker build, docker push

Создать новый с нуляdocker create, docker import

Docker HubПочти как github, только для образов

Бесплатные паблик репозитории + 1 приватныйdocker pull ubuntudocker push betterUbuntu

Docker RegistryЛокальный репозиторий для образов

Установка на свой серверdocker pull registry_host:5000/ubuntudocker push registry_host:5000/betterUbuntu

Сохранить/загрузитьdocker save image > /fdd/image.tardocker load < /fdd/image.tar

Собрать из DockerfileFROM ubuntuRUN apt-get update && apt-get install nginxCOPY ~/www /var/wwwEXPOSE 80ENTRYPOINT nginx

Deploy контейнераНа сервере сборки 1) docker build -t web_service web/2) docker tag web_service registry:5000/web_service3) docker push registry:5000/web_service

На docker host 1) docker run -d registry:5000/web_service

Как это работает на PROD?

Бал

ансе

р (N

ginx

) :80 web_service :8001

web_service :8002

web_service :800n

Спасибо за внимание!Вопросы?

Recommended