Рубрики
Uncategorized

Docker, лучшие практики для разработчиков и что дальше?

В статьях описывается важность Docker и его лучших практик. Tagged с DevOps, Dockers, BestPractices, разработчиками.

Часть статьи первоначально опубликована на ‘ Hackernoon

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

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

Виртуальные машины и эволюция Docker:

Давным -давно, до введения Docker и контейнеров, крупные фирмы пойдут и купили много серверов, чтобы убедиться, что их услуги и бизнес не упали. Этот процесс обычно означал, что фирмы покупали больше серверов, чем необходимо, что было чрезвычайно дорого. Но им нужно было сделать это, потому что, поскольку все больше и больше пользователей достигают своих серверов, они хотели убедиться, что они могут хорошо масштабироваться без каких -либо простоя или отключения. Затем у нас были VMware и IBM (все еще есть дебаты о том, кто в первую очередь представил виртуализацию, которая позволила нам запустить несколько операционных систем на одном хосте. Это был изменение игры, но также, казалось, было очень дорогим с несколькими ядрами и OSS. Так перенесемся в современную контейнеризацию, у нас есть эта компания «Docker», которая решает много проблем.

Почему разработчикам нравится Docker?

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

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

Во всем мире и по всей отрасли, многие компании и институты используют Docker для ускорения своей деятельности по развитию. У PayPal сейчас более 700 приложений, и они преобразовали их в приложения на основе контейнеров. Они запускают 150 000 контейнеров, и это помогло им повысить производительность DEV на 50%.

Metlife, еще один замечательный пример, сделал огромную экономию в своей инфраструктуре, потому что они смогли использовать меньше операционных систем для управления большим количеством приложений. Это вернуло им большую часть их оборудования, и, следовательно, они смогли сэкономить много денег на инфраструктуру и снижение затрат. После переезда в Docker, Metlife наблюдал снижение стоимости виртуальной машины на 70%, что на 67% меньше процессоров, 10X AVG. Использование процессора и снижение затрат на 66%. Это сила докера для вас.

Почему Docker стал таким популярным?

  • Легкий вес
  • Портативный
  • Быстро
  • Нет гипервизора

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

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

С другой стороны, Docker связан с системным ядром, обходит посредника на машинах Linux и даже Windows 10, Windows Server 2016 и выше. Это означает, что вы можете запустить любую версию Linux в контейнере, и она будет работать назначенным. Не только это , Docker также использует меньше места на дисковом пространстве.

Виртуализация против контейнеризации:

Источник: это изображение повсюду в Интернете, но я впервые увидел его на учебном пособии Ника Джанетакиса

В виртуализации инфраструктура будет представлять ваш сервер, который является обнаженным металлом — хост может быть вашим ноутбуком или рабочим столом. Кроме того, у нас есть операционная система, что -то вроде сервера Windows или для вашего личного ноутбука, Mac OS или Linux. В виртуализации у нас есть что -то известное как гипервизор. Поскольку мы запускаем эти виртуальные машины, которые в основном являются изолированными настольными средами внутри файла, гипервизор — это то, что поймет, как прочитать этот файл. Это то, что такое изображение виртуальной машины, и общие гипервизоры, такие как VMware и VirtualBox, знают, как интерпретировать эти операционные системы.

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

Теперь давайте сопоставим это с контейнеризацией. В этом у нас есть инфраструктура и ОС, но нет гипервизора. Он имеет процесс, который напрямую работает в операционной системе, известной как Docker Daemon, и это облегчает и управляет такими вещами, как запуск контейнеров в системе, изображения и все командные утилиты, которые они поставляются с Docker. Приложения, которые мы запускаем на этих изображениях, в основном работают непосредственно на хост -машине. Что происходит, так это то, что мы создаем изображения, которые похожи на копии приложения, которые мы хотим распространять, и управляющий экземпляр изображения — это то, что известен как контейнер. Контейнеризация в основном убивает драму «он работает на моей машине, но не на их».

Терминологии Docker:

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

  • Build: Создание снимка изображения из DockerFile.

  • Тег: версия изображения. У каждого изображения будет имя тега.

  • Контейнер: легкий программный пакет/блок, созданный из определенной версии изображения.

  • Dockerhub: репозиторий изображения, где мы можем найти разные типы изображений.

  • Docker Daemon: Docker Daemon работает на хост -системе. Пользователи не могут напрямую общаться с Docker Daemon, но только через клиенты Docker.

  • Двигатель Docker: Система, которая позволяет создавать и запускать контейнеры Docker.

  • Docker Client: Это главное взаимодействие пользователя для Docker в двоичном формате Docker. Docker Daemon получит команды Docker от пользователей и аутентификат до общения с Docker Daemon.

  • Реестр Docker: Реестр Docker — это решение Это хранит ваши изображения Docker. Эта служба отвечает за хостинг и распространение изображений. Реестр по умолчанию — это концентратор Docker.

Охватывает DevOps с Docker:

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

Docker может решить большинство проблем Dev и OPS, и основной, «он работает на моей машине», позволяет обеим командам эффективно сотрудничать и эффективно работать. Согласно RightScale 2019 State of the Cloud Report , Docker уже выигрывает игру в контейнер с удивительным ростом в гостях. С Docker вы можете сделать неизменную среду разработки, постановки и производственных сред. У вас будет высокий уровень контроля над всеми изменениями, потому что они сделаны с использованием неподвижных изображений Docker и контейнеров. Вы всегда можете вернуться к предыдущей версии в любой момент, если хотите.

Разработка, постановка и производственная среда становятся более похожими. С Docker гарантируется, что если функция работает в среде разработки, она также будет работать в постановке и производстве. DataDog В своем отчете об опросе показано, что в начале апреля 2018 года в начале апреля 2018 года в своем отчете о том, что в начале апреля 2018 года в своем отчете приняли выборку в исследование, в своем отчете о том, что в начале апреля 2018 года в начале апреля 2018 года в начале апреля 2018 года было принято более 10 000 компаний и 700 миллионов контейнеров. Годом ранее. С 2015 года доля клиентов, управляющих Docker, выросла со скоростью от 3 до 5 баллов в год.

Лучшие практики Docker:

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

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

  • Используйте

  • Многоценные сборки

  • Не используйте пользователя root, когда это возможно Используйте

  • официальный специально построенные изображения

  • Включить Docker Content Trust

  • Используйте Docker Bench для обеспечения безопасности Используйте

  • Артефактор для управления изображениями Docker

  • Используйте функции Docker Enterprise для дополнительной защиты Написание

  • Файл Docker всегда критичен

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

  • Контроль доступа на основе ролей

  • Не добавляйте учетные данные пользователя/ключи/критические данные в изображение. Используйте его в качестве переменной развертывания

  • Используйте

  • Docker Caching

  • , попробуйте нажать «копия». «до последней строки в Dockerfile, если это возможно Используйте .dockerignore file Не устанавливайте инструменты отладки для уменьшения размера изображения

  • Всегда используйте пределы ресурсов с помощью Docker/контейнеров

  • Используйте режим роя для небольшого приложения

  • Не слепо доверяйте загрузке из Dockerhub! Проверьте их! Смотрите больше на ‘

  • Dockerhub Breach может иметь долгий охват

  • Делать Изображение Docker с настроенными параметрами ядра Используйте

  • альпийское изображение

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

Миллионы пользователей полагаются на Docker, загружая 100 -метровые контейнерные изображения в день или, возможно, даже больше (согласно их блогу), и более 450 компаний обратились к Docker Enterprise Edition, включая некоторые из крупнейших предприятий в мире. Но недавно Докер получил приобретено Мирантисом , и это может оказать огромное влияние на сообщество разработчиков. Проблема заключалась в том, что Docker не заработал достаточно денег со своим стратегическим подходом внедрения роя Docker, в то время как Kubernetes захватил мир и чуть не убил Docker Swarm. Это привело их к тому, чтобы переехать с кем -то, кто что -то делает вместе с Kubernetes и OpenStack и помогая компаниям развернуться со скоростью.

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

Оригинал: «https://dev.to/pavanbelagatti/docker-best-practices-for-developers-what-next-1fjk»