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 Slide

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

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

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

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View 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 Slide

  12. View Slide

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

    View Slide

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

    View Slide

  15. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide