Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ilya Rusanen - Bye world, hi Docker

Ilya Rusanen - Bye world, hi Docker

Moscow 2600

March 02, 2018
Tweet

More Decks by Moscow 2600

Other Decks in Programming

Transcript

  1. Bye world, hi Docker
    f1nnix, @IlyaRusanen, f1nn.com, 2600, 2k18
    Гайд для тех, кто все «собирался попробовать»

    View full-size slide

  2. Что такое Docker и зачем он мне
    • Виртуализация уровня ОС

    • Позволяет гарантировано запускать
    программы на поддерживаемой
    платформе

    • Облегчает управление сложной
    инфраструктурой

    • Обеспечивает портабельность софта.
    Да-да, Metasploit на macOS без боли!
    НЕ ПАРАВИРТУАЛИЗАЦИЯ
    НЕ СРЕДСТВО ИЗОЛЯЦИИ

    View full-size slide

  3. Что мы понимаем под Docker

    View full-size slide

  4. Необходимый минимум Docker
    Хост Образы
    Контейнеры
    Тома
    Networking
    (звучит скучно, на деле — веселее)

    View full-size slide

  5. Хост
    Dockerhost — это компьютер с поддерживаемой
    архитектурой, на который устанавливается ПО для работы с
    контейнерам. Хост должен экспозить API, хоть куда-нибудь.
    •Компьютер
    •Сервер
    •Виртуальная машина
    •Одноплатный компьютер
    •Телефон
    •Кофеварка

    View full-size slide

  6. Образы
    Образы — это слоеный
    пирог из изменений,
    которые аффектят
    файловую систему.
    Дамп, из которого
    запускается контейнер.
    Похоже на Git-
    репозиторий.

    View full-size slide

  7. Контейнеры
    Контейнер — «изолированная» среда исполнения программного
    кода со своей копией файловой системы. Контейнер рождается
    из образа. Один контейнер — один процесс.
    Контейнер можно запустить, приостановить или убить. А еще
    можно настраивать:
    •пробросить порты
    •указать переменные окружения
    •замонтировать файлы с хоста
    •засунуть в какую-нибудь подсеть
    •заставить работать в интерактивном режиме

    View full-size slide

  8. Контейнеры

    View full-size slide

  9. Тома
    Тома — это специальные
    выделенные места в
    файловой системе. Им
    можно дать название. А
    потом примонтировать в
    контейнеру. Или сразу к
    десятку контейнеров.
    Что-то типа общего
    буфера обмена.

    View full-size slide

  10. Networking
    Networking — это
    система организации
    сетевого общения
    между контейнерами.
    •bridge
    •host
    •null
    Чаще всего вы будете
    пользоваться bridge.

    View full-size slide

  11. Dockerfile
    Dockerfile — это сценарий, по которому собирается образ
    контейнера. Например:
    1.взять Ubuntu Linux
    2.сделать apt-get update
    3.установить Python
    4.выполнить команду pip install -r requirements
    5.засунуть в контейнер содержимое хостовой директории ~/dev/
    app так, чтобы внутри контейнера она оказалась в /srv/app/
    6.прокинуть 8080 наружу
    7.запустить ~/src/app/python ./manage.py runserver 0.0.0.0:8080

    View full-size slide

  12. Как запустить контейнер
    docker run <параметры> <тома> <порты> <образ> <команда>
    Огромный список параметров для запуска контейнеров можно найти здесь:
    https://docs.docker.com/engine/reference/run/

    View full-size slide

  13. docker-compose
    Docker-compose — это система орекестрации контейнерной
    инфраструктуры. Другими словами, тулза, которая поднимет
    тебе сразу много контейнеров с описанным параметрами по
    заданному сценарии.
    Ей нужно передать docker-compose.yml.
    В `yml`-файле можно передать все то же, что и в командной
    строке запуска единичного docker-контейнера.

    View full-size slide

  14. А где взять compose-файлы?
    Почти для всех проектов в Сети существуют или dockerfile
    или даже целые docker-compose.yml, которые воспроизводят
    рефренсную инфраструктуру для нужной программы.
    А еще можно написать самому. Это ужасно просто:
    https://docs.docker.com/compose/compose-file/

    View full-size slide

  15. Docker-machine
    Docker-machine — это такая штука, которая позволяет
    превратить что угодно в Докерхост! Запускаешь и оно
    преращается в Докерхост.

    View full-size slide

  16. Драйверы docker-machine
    machine позволяет создать, удалить, логиниться по SSH и
    удобно переключаться между машинами (докерхостами
    прямо из одного терминала).
    К примеру, можно сделать докер-машину из:
    •Amazon/Digitalocean—инстанса
    •Любой VPS’ки
    •Виртуальной машины в Virtualbox

    View full-size slide

  17. Драйверы docker-machine
    Драйверов очень
    много. Их выпускают
    компании. Пишут
    энтузиасты.
    Если хостер
    поддерживает API для
    виртуалок, можно
    написать драйвер.
    Особый — generic.

    View full-size slide

  18. Спасибо за внимание!
    f1nnix, @IlyaRusanen, f1nn.com, 2600, 2k18

    View full-size slide