DevGang
Авторизоваться

10 причин, почему разработчики любят Docker

Когда вы впервые заглядываете в Docker, что он делает и как он работает, он кажется полезным инструментом для упаковки и развертывания приложений. Однако только после того, как вы начнете его использовать, некоторые другие преимущества, которые так любят разработчики, проявятся сами собой. Итак, чтобы узнать, почему этот инструмент стал настолько популярным, вот десять причин, почему разработчики любят Docker .

1. Docker облегчает упаковку

Традиционная методология развертывания включает в себя отправку артефакта приложения на сервер, а затем его запуск. Это также включает установку любых библиотек и файловой структуры, которые требуются приложению.

Docker переворачивает это с ног на голову. Образ Docker должен включать в себя все необходимое для запуска приложения, включая сервер приложений, зависимости, файловую структуру, а также в самом приложении. Это дает разработчикам возможность отвечать не только за разработку, что имеет смысл, поскольку в конечном итоге это их код.

2. Образы Docker создаются один раз и запускаются где угодно

Образы Docker создаются один раз и запускаются где угодно. Или, точнее, везде, где вы можете запустить Docker.

Это делает развертывание более предсказуемым, поскольку один и тот же образ развертывается в ваших производственных и тестовых средах. Это исключает любые неожиданности из уравнения, поскольку мы можем быть уверены, что приложение и его зависимости будут развернуты одинаково.

3. Изображения Docker являются расширяемыми

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

В качестве примера, скажем, мы хотели использовать популярный облегченный дистрибутив Linux Alpine Linux, чтобы запустить команду curl для получения определенного URL. По умолчанию Alpine Linux не содержит curl , но мы можем легко расширить изображение, чтобы добавить его, например, так:

FROM alpine
RUN apk add curl

Если бы мы создали и запустили этот образ, мы получили бы всю функциональность Alpine Linux с добавлением curl .

4. Самые популярные приложения уже доступны в Docker

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

Это облегчает жизнь разработчиков, поскольку они могут быстро получить все необходимое для запуска приложения в локальной среде разработки.

Взять, к примеру, популярную технологию баз данных Postgres. Все, что вам нужно сделать, это запустить, docker run postgres и у вас есть экземпляр Postgres, готовый для подключения вашего приложения.

5. Контейнеры Docker - это ... контейнеры

Это может показаться очевидным, но одним из огромных преимуществ для разработчиков в использовании Docker является их контейнерная природа. В широком смысле это означает, что:

  1. Процессы, запущенные в контейнерах, не могут видеть другие процессы на том же хосте
  2. Процессы, выполняющиеся в контейнерах, ограничены тем, сколько памяти и процессора они могут использовать
  3. Контейнеры могут быть доступны только на указанных портах
  4. Файловая система контейнера отделена от файловой системы хоста и очищается при удалении контейнера.

Все эти моменты дополняют ощущение, что при использовании Docker контейнеры очень автономны и одноразовы. Если вы хотите иметь совершенно новую среду разработки, просто остановите контейнеры и начните снова.

6. Совместное использование образов Docker легко с реестром Docker

Docker Registry - это сервис, который используется для распространения образов Docker. Это похоже на то, что Maven Central относится к артефактам Maven. Один из самых известных реестров Docker - Docker Hub , где вы можете найти все виды общедоступных изображений. Некоторые альтернативы включают в себя:

  1. Реестр контейнеров Google
  2. Amazon Elastic Container Registry
  3. JFrog Artifactory

Конечно, все эти опции позволяют вам хранить личные изображения, к которым у вас есть доступ только авторизованным пользователям. Это означает, что разработчики могут создавать образы Docker своих приложений один раз, опубликовать их в реестре, а затем развернуть в любых необходимых средах.

7. Docker контейнеры делают среду разработки больше похожей на производство

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

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

С другой стороны, это также означает, что, когда приложение тестируется во время его пути к производству, менее вероятно, что у нас будет ошибка в работе, которая не проявилась в тестовой среде.

8. Docker Compose облегчает запуск целых сред для разработчиков.

Docker Compose - это инструмент, поставляемый в комплекте с Docker, который позволяет запускать любые приложения, которые вам нужны, используя простую спецификацию YAML или JSON.

Вы определяете различные приложения, которые должны быть запущены, наряду с другими конфигурациями, такими как сеть. Таким образом, если приложение, которое вы разрабатываете, зависит от базы данных или других приложений, процесс запуска всего один шаг.

Вот пример файла Docker Compose, который определяет экземпляр Prometheus и Grafana, популярных приложений для мониторинга и построения графиков:

version: "3"
services:
  prometheus:
    image: prom/prometheus:latest
    ports:
      - 9090:9090
  grafana:
    image: grafana/grafana
    ports:
      - 3000:3000
    depends_on:
      - prometheus   

Чтобы запустить эти приложения, вы просто должны запустить docker-compose up , затем у вас будет запущен экземпляр Prometheus http://localhost:9090 и Grafana http://localhost:3000 .

Все это может быть встроено в вашу систему контроля версий, что делает среду разработчика более детерминированной и предсказуемой.

9. Использование возможностей Docker ускоряет рабочий процесс разработки

Одной из основных проблем разработчика является длительность написания кода до его доставки в производство. Иногда это может быть связано с медленными и громоздкими процессами непрерывной интеграции (CI), требующими времени для запуска тестов.

В этом может помочь Docker, так как длительный набор тестов может быть разделен на несколько контейнеров Docker. Инструменты CI, такие как Jenkins, упрощают эту задачу, так как вы можете настроить их так, чтобы они создавали задания в популярных платформах оркестровки Docker, таких как Kubernetes и Amazon ECS.

Например, если ваш процесс тестирования включает следующие этапы, вы можете запустить их все параллельно в Docker:

  1. модульные тесты
  2. интеграционные тесты
  3. тесты производительности

10. Услуги оркестровки Docker предоставляют возможности для производства

Как только мы перейдем к производственной среде, высокая доступность и масштабируемость станут серьезной проблемой. Все хорошо работает с одним контейнером Docker для нашего приложения в тестовой среде, но ваши клиенты, вероятно, не оценят его на производстве.

К счастью, существует несколько платформ для оркестровки контейнеров Docker, которые позаботятся обо всех сложностях, связанных с масштабированием, развертыванием и управлением приложением. Вот некоторые из них:

  1. Docker Swarm включен в Docker и позволяет запускать Docker-контейнеры на нескольких узлах Swarm.
  2. Kubernetes , пожалуй, самая популярная платформа, обеспечивающая большое количество возможностей настройки
  3. AWS ECS - это сервис эластичных контейнеров Amazon. Хотя он не так настраиваем, как Kubernetes, он легко запускается и хорошо интегрируется в другие сервисы AWS.

Такие функции, как автоматическое масштабирование, прокатное развертывание и откаты, означают, что разработчики могут немного лучше спать по ночам, зная, что если проблемы действительно случаются, то в какой-то степени фреймворк может взять все на себя.

Вывод

Надеюсь, теперь вы можете немного лучше понять точку зрения разработчика, когда он скажет вам, как сильно он любит Docker. Поэтому неудивительно, что в недавнем опросе своих клиентов, проведенном Datadog , примерно 25% уже использовали Docker. Мы ожидаем, что благодаря таким популярным облачным провайдерам, как Amazon и Google, интеграция с Docker будет еще более плавной, а их рост еще выше.

Источник:

#Docker
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

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

Попробовать

В этом месте могла бы быть ваша реклама

Разместить рекламу