Изучая Docker - введение

Docker - это лидирующая контейнерная платформа. Позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, который может быть перенесен на любую Linux-систему. Разработчики используют Docker чтобы исключить такой момент как "работа на моей машине".

Простой пример необходимости использования Docker при разработке информационных систем

Вы, как технический руководитель проекта, хотите организовать модульное, функциональное и приемочное тестирование своего продукта. Первое, что необходимо сделать - это определить инструменты для тестирования, например:
  • Codeception - фреймворк для тестирования приложений, написанных на языке программирования PHP
  • Selenium - инструмент для тестирования Web-приложений
  • Firefox - веб браузер
  • Geckodriver
Для приемочного тестирования необходимо запустить приложение в установленном окружении, например:
  • Ubuntu Server - ОС
  • NGINX - веб-сервер
  • PHP для интерпритации вашего приложения
  • PostgreSQL - СУБД
  • Xvfb - сервер виртуального дисплея
  • другие инструменты
В ТЗ, как правило, указаны определенные версии, для каждого из инструментов. Теперь представим, что у вас "нное" количество разработчиков системы разбросанных по всему миру, которые должны писать и запускать тесты на приложение в одном и том же окружении. Очень важный момент, повторюсь, в одном и том же окружении, т.е. со всеми вышеописанными инструментами да еще и с конкретными версиями приложений, которые указанны в ТЗ. Самый просто вариант, отослать ТЗ разработчам и пусть они настраивают окружение в соответствии с правилами, но это достаточно трудоемкий, не эффективный и непрофессиональный подход к решению задачи. Такой способ может привести к проблемам совместимости, если вдруг некоторая зависимость по ошибке будет установлена не той версии.

Решением этой проблемы является - Docker. Вы в соответствии с установленными техническими требованиями проекта, реализуете необходимое окружение и отправляете его разработчикам, оставаясь уверенными в том, что все тесты будут интерпретироваться в одном установленном окружении. Повторюсь, это лишь один из многих примеров, которых можно привести. Docker очень могущественная вещь и может помочь решить множество проблем и задач возникших у разработчиков и системных администраторов. Довольно часто docker применяют, чтобы распараллелить выполнение приемочных и функциональных тестов.

Dockerfile

Docker умеет собирать билды образов читая инструкции из специального файла "Dockerfile". Dockerfile своего рода сценарий, который четает демон докера при сборке образа. На выходе вы получаете готовый образ, который можете использовать, экспортировать или загрузить на Docker Hub

Синтаксис Dockerfile

INSTRUCTION arguments
INSTRUCTION - инструкция
arguments - аргументы

Простой пример Dockerfile

FROM ubuntu

RUN apt-get update

RUN apt-get install firefox -y

Этим сценарием мы говорим, что на основе образа ubuntu, после обновления списка репозиториев нужно установить firefox. Если образ ubuntu отстуствует в системе, то он будет загружен из Docker Hub

Собираем билд

docker build -t my-app .
Этой командой производится сборка образа, который будет иметь тег "my-app". Также обязательно должна быть указана директория, где лежит Dockerfile, в примере выше это "." - текущая директория

Запуск образа

docker run my-app firefox -v

Дополнительные материалы

Информация

Автор конспекта


Дата создания: 01.01.2019
Категория: Веб-разработка