Что делает Docker и когда его использовать? — CloudSavvy ИТ

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

Что такое докер?

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

Docker Engine работает в Linux, Windows и macOS и поддерживает Linux и Windows для контейнеров Docker. Точная разновидность Linux на самом деле не имеет значения; большинство версий Linux будут работать с одним и тем же ядром и будут отличаться только программным обеспечением пользователя. Docker может установить это пользовательское программное обеспечение в контейнер, что позволяет запускать контейнер CentOS в Ubuntu. Однако вы не могли, например, запустить FreeBSD на Ubuntu, поскольку ядра другие.

Образ контейнера Docker включает только то, что нужно вашему приложению для запуска. Если ваше приложение использует nginx и Node.js, образ контейнера будет включать их, но вы не будете обременены всеми другими пользовательскими приложениями, которые вы обычно найдете в Linux.

Почему докер так полезен?

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

С Docker ваша среда разработки будет точно такой же, как и ваша производственная среда, и точно такой же, как и все остальные среды разработки, что устраняет проблему «она сломана на моей машине!»

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

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

Докер помогает это исправить; вы можете упаковать свой веб-сервер и запустить его с контейнером nginx, вы можете упаковать свой сервер API и запустить его с контейнером Node.js, а также вы можете упаковать свою базу данных и запустить ее в собственном контейнере (хотя это может быть не лучшая идея, но это возможно). Вы можете взять эти три контейнера Docker и запустить их все на одном компьютере. Если вам нужно сменить сервер, это так же просто, как перенести эти контейнеры на новый сервер. Если вам нужно масштабировать, вы можете переместить один из этих контейнеров на новый сервер или развернуть его в кластере серверов.

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

Как вы используете Docker?

В производственной среде существует множество сервисов для размещения контейнеров Docker, в том числе AWS ECS, Экземпляры контейнеров Azure, Капли докеров DigitalOcean, и много других. Если ваш провайдер не предлагает управляемый хостинг Docker, вы всегда можете установить его самостоятельно на свой VPS.

В процессе разработки контейнеры Docker просты в использовании и требуют всего нескольких команд. Для начала вам необходимо установить движок Docker в ОС вашего хоста. Для Windows и macOS вы можете использовать Docker Desktop, но для Linux вам необходимо установить версию сообщества Docker из диспетчера пакетов. Для дистрибутивов на основе Debian, таких как Ubuntu, это будет:
sudo apt-get install docker
При любом методе установки у вас теперь должен быть доступ к Docker из командной строки. Чтобы убедиться, что он работает, вы можете запустить:
Докер запускает привет-мир
Docker должен извлечь этот учебный образ из Докер Хаб, онлайн-хранилище множества полезных образов контейнеров. Вы можете использовать многие из этих образов в качестве основы для установки своих приложений.

Создадим простой веб-сервер на базе nginx. Nginx предоставляет сборку на Докер Хаб которую мы можем использовать в качестве отправной точки. Создайте новый каталог для хранения файлов и откройте его:
mkdir ~ / dockertest && cd ~ / dockertest
Любые изменения, внесенные в базовый образ nginx, мы вносим с помощью файла Dockerfile. Dockerfiles похожи на make-файлы для контейнеров, они определяют, какие команды запускать, когда Docker создает новый образ с вашими изменениями. Dockerfile называется просто Dockerfile без расширения. Создайте этот файл с помощью Touch Dockerfile и откройте его в текстовом редакторе. Вставьте это в:
ИЗ nginx КОПИРОВАТЬ html / usr / share / nginx / html
Первая строка — это команда Docker, которая сообщает Docker о необходимости создания этого образа на основе образа nginx из концентратора. Вторая строка — это еще одна команда, которая копирует каталог из этой локальной папки (~ / dockertest / html) в образ Docker, в данном случае заменяя папку HTML для nginx.

В Dockerfiles можно запускать множество команд. Например, если вашему приложению необходимо установить зависимости, вы можете сделать что-то вроде RUN cd src / && npm install. Все, что требуется вашему приложению для начальной загрузки, запуска и запуска, определяется в файле Dockerfile.

На самом деле мы еще не создали каталог ./html, поэтому запустите:
mkdir html && touch html / index.html
Для создания справочника и записи HTML. Откройте index.html и вставьте фиктивный HTML:
<! DOCTYPE html> Привет от nginx, внутри Docker! Внутри твой компьютер?
Теперь мы готовы приготовить наш образ. Убедитесь, что вы находитесь в корне проекта (в ~ / dockertest, а не в папке html), и запустите:
docker build -t dockertest.
Точка в конце означает, что мы будем использовать текущий каталог в качестве отправной точки. Docker должен найти Dockerfile и приступить к работе. Однако это займет всего несколько секунд, и когда это будет сделано, вы можете запустить его с помощью:
docker run —name DockerTest -p 8080: 80 -d dockertest
Это запустит новый контейнер под названием DockerTest, используя созданный нами образ «dockertest». Флаг -p связывает локальный порт с портом внутри контейнера, в данном случае привязывая HTTP-порт nginx по умолчанию (порт 80) к порту 8080 на вашем локальном компьютере. Откройте localhost: 8080 в своем браузере, и вы увидите, что nginx запущен.

Если вам нужна дополнительная настройка, вы можете отредактировать файлы конфигурации nginx, включив COPY nginx.conf /etc/nginx/nginx.conf и написав свой собственный файл конфигурации. Это сложнее настроить, чем редактировать файл конфигурации напрямую, поскольку вам придется перестраивать изображение при каждом редактировании. Но для дополнительного преимущества, заключающегося в возможности взять тот же контейнер, который вы используете при разработке, и развернуть его в производственной среде, это довольно справедливый компромисс.

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

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *