Что такое Docker?
Docker — это новый подход к виртуализации. Если вы понимаете виртуализацию, не стесняйтесь пропустить следующий раздел. Если нет, вам понадобится базовое понимание виртуализации, прежде чем я смогу помочь вам понять Docker.
Что такое виртуализация?
Давайте начнем с метафоры: представьте, что у вас есть дом. У вас есть друг, которому нужно место. У вас есть несколько вариантов, если вы хотите помочь своему другу.
- Переместите свой друг прямо в свою спальню с собой. Это может получить немного напряженного.
- Постройте новый дом для своего друга в вашей собственности. Это дорогое решение.
- Пригласите своего друга остаться в запасной спальне. Теперь мы получаем где-то …
Третий вариант довольно хорош. Вы можете помочь своему другу, не наращивая их нового дома, но и сохраняя свою жизнь в основном отдельной. Вы будете делиться некоторыми общими ресурсами, такими как кухня и гостиная, но каждый из них можно зайти в свои собственные спальни и закрыть дверь для некоторой конфиденциальности.
Виртуализация похоже на создание вашего друга в вашей спальне. Представьте, что вы хотите запустить веб-сервер на вашем компьютере. Вы хотите сохранить его отдельно от вашей собственной операционной системы и приложений. Для этого вы можете запустить Виртуальная машина содержащий веб-сервер. Он работает как отдельный компьютер, но он использует процессор вашего компьютера и RAM. Когда вы запускаете виртуальную машину, вся операционная система отображается в окне внутри вашей операционной системы.
Что отличается от докера?
Docker — это другой способ сделать виртуализацию. Там, где типичная виртуальная машина упаковывает операционную систему с помощью приложения, который вы работаете, докер докера, как это может между вашими виртуализированными системами. Это заставляет их использовать Меньше ресурсов Когда они бегут и делают их легче отправить вокруг другим разработчикам или к вашей производственной среде.
Если вы изучаете веб-разработку самостоятельно, трудно узнать, что вы должны учиться дальше. Зарегистрируйтесь на бесплатную сессию наставничества в Rad Devon И мы выясним ваши следующие шаги, чтобы перейти к вашей веб-карьере веб-разработки!
Почему разработчики должны использовать Docker?
Docker дает веб-разработчикам несколько крутых сверхдержавы .
Простота обмена оружиям развития
Если вы и я собираетесь сотрудничать в приложении узла, мы хотели бы убедиться, что у нас установлено узел и что Это та же самая версия Так что наша среда последовательна. Мы могли бы пропустить это и надеяться на лучшее, но это мог бы заставляют проблемы США, которые могут быть трудно сузить. Библиотеки и наш собственный код иногда ведут себя по-разному через разные версии узла.
Решением является обеспечение того, чтобы у нас обоих одинаковую версию узла, но, если у каждого из нас уже есть другие проекты в наших системах, которые требуют других версий узла, мы, вероятно, захотите установить NVM который позволяет нам легко переключать версии узла. Затем мы можем добавить файл .nvmrc в корню проекта, указав общую версию, которую мы хотим.
Мы должны сделать это только один раз, поэтому наша работа сейчас сделана. Подводя итоги, вот что мы должны были сделать:
- Выберите версию узла.
- Установите NVM.
- Установите нашу выбранную версию узла.
- Добавьте .nvmrc в каталог проекта, установка правильной версии узла.
- Начните приложение.
Работает, но это много. Мы должны сделать большую часть этого снова для всех, кого мы хотим присоединиться к нам в этом проекте. Даже если мы возьмем все эти шаги, Мы все еще не можем гарантировать, что среда такая же для всех разработчиков. Вещи могут сломаться между разработчиками, выполняющими разные операционные системы или даже разные версии одной и той же операционной системы.
Докер позволяет нам вытянуть все эти проблемы, доставляя одинаковую среду разработчиков для всех разработчиков. Вместо этого, с докером, вот что мы сделаем:
- Установить Docker.
- Напишите DockerFile.
- Беги
Docker Build -T
Отказ Имя изображения может быть тем, что вы выбираете. - Беги
Docker Run -P 3000: 3000 <имя изображения>
Отказ Опция «P» отображает контейнерный порт в локальный порт. Это позволяет вам ударить порт 3000 на вашем компьютере, к которому будет отображаться в порт 3000 на контейнере. Используйте то же имя изображения, что и на шаге 3.
Это может не показаться намного проще, чем настройка узла/NVM (и это действительно не). Это делает пойти с преимуществом, хотя. Вам нужно будет установить Docker только один раз Независимо от вашего технологического стека. Конечно, вам нужно только один раз установить узел (если вам не нужны несколько версий), но, когда вы будете готовы работать над приложением, в котором находится в другом стеке, вам нужно установить все необходимое программное обеспечение для этого куча. С Docker вы просто напишите другой DockerFile (или Docker Compose Файл в зависимости от сложности вашего приложения).
Dockerfile очень прост: это текстовый файл с именем «Dockerfile» без расширения. Давайте посмотрим на DockerFile, вы можете использовать для простого приложения узла.
# This Docker image will be based on the Node 11.6 image FROM node:11.6.0 # Install dependencies COPY package*.json ./ RUN npm install # Copy the node app from the host into the image at /app COPY . /app # Expose port 3000 and start the app EXPOSE 3000 CMD npm start
Этот DockerFile написан для приложения узла, который слушает на порту 3000 и начинается с NPM начать
команда. Обязате это к репозитории вашего проекта, а на борт новых разработчиков становится довольно простым и 100% последовательным: каждый разработчик получает одну и ту же среду каждый раз.
Развиваться в той же среде, что и производство
Как только у вас есть приложение вверх и запущена в среде разработки докеров, вы можете на самом деле отправить весь целый контейнер непосредственно к производству. Если вы думаете, что это боль, чтобы иметь дело с несоответствиями между двумя разработчиками, просто подожди, пока не напишите код, который работает на вашей машине только чтобы иметь это не Работа в производстве . Это чрезвычайно расстраивает.
У вас есть тонны параметров для развертывания контейнеров докеров к производству. Вот несколько:
- AWS ECS ( Официальное руководство )
- Цифровой океан ( Учебное пособие )
- Heroku ( Официальное руководство )
- небрежный ( Официальное руководство )
Мне нравится подход Heroku, потому что это единственный, который позволяет вам просто подталкивать свой проект с помощью DockerFile для них, чтобы запустить. Другие предпринимают еще несколько шагов, как толкая ваше изображение докера в репозиторий. Дополнительные шаги не являются концом мира, но они не нужны.
Как насчет более сложных приложений?
Из-за философии докера (один процесс на контейнер), Большинство приложений потребуют нескольких контейнеров Отказ Например, сайт WordPress должен состоять из контейнера для веб-сервера, работающего PHP и контейнера для базы данных MySQL. Это означает, что вам нужен путь для контейнеров, чтобы поговорить. Это называется Контейнерная оркестровка Отказ
Если вы можете запустить все ваши контейнеры на одном хосте, Docker Compose Вероятно, удовлетворит ваши потребности в оркестровке. Он включен, когда вы устанавливаете Docker, и это легко учиться. Это позволяет вам начать несколько контейнеров одновременно и настроить сеть между ними, чтобы они могли разговаривать друг с другом. Это самый быстрый и простой способ организовывать несколько контейнеров.
Если вам нужно разрезать контейнеры Orchestrate, распространяются через несколько Хосты, Кубернаны это преобладающее решение. Многие хосты, которые поддерживают развертывание Docker, предлагают Kubernetes для оркестрации.
Быстрые выигрыши от понимания докера
Сейчас не может показаться важно, но в первую очередь подать эти знания, вы набегаете проблему, вызванную различиями в средах. Вы не будет Хотите, чтобы это произошло снова. Обучая докер, Вы сможете обеспечить постоянную среду для вашего приложения Независимо от того, где он работает или кто его бежит. Это означает Последовательные результаты Что вы, ваши клиенты, и ваши работодатели могут положиться.
Оригинал: «https://dev.to/raddevon/why-should-i-care-about-docker-2fnp»