Рубрики
Uncategorized

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

Когда вы сначала посмотрите на Docker, что он делает, и как он работает, это кажется аккуратным инструментом, чтобы помочь … Tagged с Docker, DevOps.

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

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

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

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

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

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

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

FROM alpine
RUN apk add curl

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

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

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

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

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

  • Процессы, работающие в контейнерах, не могут видеть другие процессы на одном хосте
  • Процессы, работающие в контейнерах, ограничены тем, сколько памяти и процессора они могут использовать
  • Контейнеры могут быть достигнуты только на указанных портах
  • Файловая система контейнера разделена с системой хоста и очищается при удалении контейнера

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

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

  • Google Container Registry
  • Реестр эластичных контейнеров Amazon
  • JFROG Artifactory

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

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

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

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

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

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

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

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

Чтобы запустить эти приложения, вы просто запустите Docker составить , тогда у вас будет экземпляр Prometheus, работающего на http://localhost: 9090 и Графана на http://localhost: 3000 Анкет

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

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

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

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

  • модульные тесты
  • Интеграционные тесты
  • Производительные тесты

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

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

  • Docker Swarm входит в Docker и позволяет запускать контейнеры Docker через несколько узлов роя

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

  • AWS ECS это эластичный контейнер Amazon. Хотя это и не так настраивается, как Kubernetes, его легко начать и хорошо интегрироваться в другие услуги AWS.

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

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

Оригинал: «https://dev.to/appfleet/10-reasons-why-developers-love-docker-2lm2»