Всем привет! Совсем недавно мне в работе стало необходимо освоить такой софт как Docker. Те кто не знаком с этой программой будут приятно удивлены. Docker — это контейнерная виртуализация, другими словами это платформа для создания виртуальных машин. Достаточно специфичная, чтобы задаться вопросами что, зачем и почему. В этой статье мы с вами поговорим о том, что такое Docker и зачем он нужен.
Рано или поздно у каждого, уважающего, себя backend — разработчика возникает вопрос о масштабируемости какого-либо компонента контура или всего контура в целом. Соответственно возникает вопрос, как и где это лучше всего сделать? Естественно, если вы обладаете серьезными мощностями и вам нужны Windows сервера то какая-нибудь Sphere будет вам полезней докера. Работая на линуксе и нуждаясь в виртуальных машинах линукса с минимальными затратами — Docker является идеальным решением.
Что такое Docker и зачем он нужен?
Docker это удобная система виртуализации, которая строит виртуальные сервера на основе 1 раз скачанного образа. То есть не затрагивая основную файловую систему. При чем образов для серверов и сервисов огромное количество, как официальных так и пользовательских. С помощью докера можно с легкостью масштабировать ваш кластер nginx, kafka, haproxy и другие. Docker гораздо прост в обращении. Основной командой для работы с контейнерами является docker flags commands container_name. Помимо этого у Docker-a имеется ряд управляющих систем сетей, стаков и сервисов. Это удобно, так как создавая, например, сервисы вы можете каждому из них передать определенные настройки в переменных среды окружения. Сделать это очень просто, но в этой статье мы не будем рассматривать примеры.
Стоит отметить быстродействие всей системы, контейнеры запускаются очень быстро по сравнению с той же Сферой. У Docker-a существует режим работы swarm, который решает большое количество вопросов по отказоустойчивости кластера и сервисов, в случае обнаружения падения контейнера, swarm автоматически создаст новый, на основе заложенной заранее конфигурации.
Несколько советов:
Совет №1: Конфигурации для докера пишутся на yaml и очень придирчивы к маппингу. При написании конфиг файлов, старайтесь ограничиваться небольшим количеством строк, иначе вы рискуете при следующих правках — сломать конфиг. Лучше разбейте конфиги на несколько маленьких файлов.
Совет №2: На всякий случай, всегда держите копию уже работающего конфига и редактируйте именно его. Так вы обезопасите себя от неисправностей.
Совет №3: Запускайте контейнеры на проме всегда только после тщательного тестирования. Малейшая ошибка (даже не критичная) может сильно поменять ситуацию на промышленном контуре.
Совет №4: Не гонитесь за новыми версиями контейнеров в докере. Достаточно часто возникают ситуации, когда новая версия может иметь какие-то ошибки, которые приведут к поломке вашего кластера.
Совет №5: Даже во время уверенной работы с докером, продолжайте изучать его документацию. Очень часто там появляется что-то новое и отключается что-то старое.
Далее будут уже более детальные статьи на тему докера. Официальной документации хоть и много, но могу от себя сказать, что она не полная. По мере возможности постараюсь описывать свой опыт работы с этой системой и прилагать к статьям какие-то свои наработки. Спасибо за внимание! Подписывайтесь на нас в социальных сетях и на Youtube-канал! Надеюсь я смог ответить на ваш вопрос что такое Docker и зачем он нужен.