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 Гайд

    для тех, кто все «собирался попробовать»
  2. Что такое Docker и зачем он мне • Виртуализация уровня

    ОС • Позволяет гарантировано запускать программы на поддерживаемой платформе • Облегчает управление сложной инфраструктурой • Обеспечивает портабельность софта. Да-да, Metasploit на macOS без боли! НЕ ПАРАВИРТУАЛИЗАЦИЯ НЕ СРЕДСТВО ИЗОЛЯЦИИ
  3. Хост Dockerhost — это компьютер с поддерживаемой архитектурой, на который

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

    файловую систему. Дамп, из которого запускается контейнер. Похоже на Git- репозиторий.
  5. Контейнеры Контейнер — «изолированная» среда исполнения программного кода со своей

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

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

    •bridge •host •null Чаще всего вы будете пользоваться bridge.
  8. 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
  9. Как запустить контейнер docker run <параметры> <тома> <порты> <образ> <команда>

    Огромный список параметров для запуска контейнеров можно найти здесь: https://docs.docker.com/engine/reference/run/
  10. docker-compose Docker-compose — это система орекестрации контейнерной инфраструктуры. Другими словами,

    тулза, которая поднимет тебе сразу много контейнеров с описанным параметрами по заданному сценарии. Ей нужно передать docker-compose.yml. В `yml`-файле можно передать все то же, что и в командной строке запуска единичного docker-контейнера.
  11. А где взять compose-файлы? Почти для всех проектов в Сети

    существуют или dockerfile или даже целые docker-compose.yml, которые воспроизводят рефренсную инфраструктуру для нужной программы. А еще можно написать самому. Это ужасно просто: https://docs.docker.com/compose/compose-file/
  12. Docker-machine Docker-machine — это такая штука, которая позволяет превратить что

    угодно в Докерхост! Запускаешь и оно преращается в Докерхост.
  13. Драйверы docker-machine machine позволяет создать, удалить, логиниться по SSH и

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

    Если хостер поддерживает API для виртуалок, можно написать драйвер. Особый — generic.