Что такое Docker Container? - Контейнеризируйте свое приложение с помощью Docker



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

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

Я перечислил темы этого блога о контейнерах Docker:





  • Зачем нужны Docker-контейнеры?
  • Как работают контейнеры Docker?
  • Примеры использования контейнера Docker

Зачем нужны Docker-контейнеры?

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

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



Рассмотрим пример ниже:

Приложение для покупок онлайн - Docker Container - Edureka

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



Что ж, у этой архитектуры много преимуществ:

  • Даже если один из ваших микросервисов выйдет из строя, все ваше приложение практически не пострадает.
  • Легче управлять

Есть много других преимуществ, я не буду вдаваться в подробности о микросервисах в этом посте. Но скоро я напишу и пару блогов о микросервисах.

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

Разработка таких приложений требует запуска нескольких микросервисов на одной машине. Итак, если вы запускаете пять из этих служб, вам потребуется пять виртуальных машин на этой машине. Рассмотрим схему ниже:

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

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

Узнайте, чем контейнеры Docker лучше виртуальных машин

Итак, представьте, что я даю 8 ГБ ОЗУ всем своим виртуальным машинам, и у меня есть 5 микросервисов, работающих на разных виртуальных машинах. В этом случае этим виртуальным машинам потребуется 40 ГБ ОЗУ. Что ж, теперь мне нужно, чтобы конфигурация моей хост-машины была очень высокой, на моей хост-машине должно быть почти 44 ГБ ОЗУ. Очевидно, что это не жизнеспособное решение для такой архитектуры, потому что я зря трачу здесь много ресурсов.

Хорошо, у меня есть много ресурсов, которые можно тратить впустую, но все же у меня есть проблема несогласованности в моем жизненном цикле доставки программного обеспечения (SDLC). Я должен настроить эти виртуальные машины как в тестовой, так и в производственной среде. Где-то в этом процессе какое-то программное обеспечение не было обновлено на тестовом сервере, и команда разработчиков использует обновленную версию программного обеспечения. Это приводит к конфликтам.

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

Теперь давайте разберемся, что такое Docker Container, как он работает и как решил мою проблему.

Что такое контейнер Docker?

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

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

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

как использовать браузер БД для sqlite

Давайте теперь разберемся, как работает Docker-контейнер.

Как работает контейнер Docker?

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

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

  • Разработчик сначала напишет код проекта в файле Docker, а затем создаст образ из этого файла.
  • Это изображение будет содержать весь код проекта.
  • Теперь вы можете запустить этот образ Docker, чтобы создать столько контейнеров, сколько захотите.
  • Этот образ Docker можно загрузить в концентратор Docker (в основном это облачный репозиторий для ваших образов Docker, вы можете оставить его публичным или частным).
  • Этот образ Docker в хабе Docker может быть загружен другими командами, такими как QA или Prod.

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

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

Ниже приводится пояснение к схеме:

  • Во-первых, мы написали сложные требования в Dockerfile.
  • Затем мы разместили его на GitHub.
  • После этого мы использовали CI-сервер (Jenkins).
  • Этот сервер Jenkins извлечет его из Git и создаст точную среду. Это будет использоваться на рабочих серверах, а также на тестовых серверах.
  • Мы развернули его в промежуточной среде (это относится к развертыванию вашего программного обеспечения на серверах в целях тестирования до их полного развертывания в производственной среде) для тестировщиков.
  • По сути, мы внедрили в производство именно то, что у нас было в разработке, тестировании и постановке.

Будет справедливо сказать, что Docker облегчил мне жизнь.

Что ж, это история моей компании, давайте посмотрим на пример Университета Индианы. Как Докер решил свои проблемы.

Пример из практики Университета Индианы:

Университет Индианы - это система государственных университетов с несколькими кампусами в штате Индиана, США.

Постановка задачи

Они использовали специальные сценарии для развертывания приложений на виртуальной машине.

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

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

Java преобразует double в int

Безопасность была необходима для данных учащихся, таких как SSN и данные о здоровье учащихся.

Решение:

Все проблемы были решены Docker Data Center (DDC), рассмотрим схему ниже:

Надежный реестр Docker - В нем хранятся образы Docker.

Веб-интерфейс UCP (универсальная плоскость управления) - Помогает управлять всем кластером из одного места. Службы развертываются с использованием веб-интерфейса UCP с использованием образов Docker, которые хранятся в DTR (доверенный реестр Docker).

Группы ИТ-специалистов используют Universal Control Plane для подготовки установленного Docker программного обеспечения на хостах, а затем развертывают свои приложения без необходимости выполнять несколько ручных шагов для настройки всей своей инфраструктуры.

UCP и DTR интегрируются с их сервером LDAP для быстрого предоставления доступа к своим приложениям.

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

Теперь я объясню вам, как мы можем использовать Docker Compose для многоконтейнерного приложения.

Практика Docker:

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

Docker Compose: Это инструмент для определения и запуска многоконтейнерных приложений Docker. С помощью Docker Compose вы можете использовать файл Compose для настройки служб вашего приложения. Затем с помощью одной команды вы можете создать и запустить все службы из вашей конфигурации.

Предположим, у вас есть несколько приложений в разных контейнерах, и все эти контейнеры связаны вместе. Итак, вы не хотите выполнять каждый из этих контейнеров один за другим. Но вы хотите запускать эти контейнеры с помощью одной команды. Вот где на сцену выходит Docker Compose. С его помощью вы можете запускать несколько приложений в разных контейнерах с помощью одной команды. то есть docker-compose up.

Пример: представьте, что у вас есть разные контейнеры, в одном из которых выполняется веб-приложение, в другом - postgres, а в другом - redis, в файле YAML. Это называется файлом docker compose, оттуда вы можете запускать эти контейнеры с помощью одной команды.

Возьмем еще один пример:

Предположим, вы хотите опубликовать блог, для этого вы будете использовать CMS (систему управления контентом), а wordpress - наиболее широко используемая CMS. По сути, вам нужен один контейнер для WordPress, и вам нужен еще один контейнер в качестве MySQL для серверной части, этот контейнер MySQL должен быть связан с контейнером wordpress. Нам также понадобится еще один контейнер для Php Myadmin, который будет связан с базой данных MySQL, в основном, он используется для доступа к базе данных MySQL.

Как насчет того, чтобы выполнить приведенный выше пример практически.

Включенные шаги:

  1. Установить Docker Compose :
  2. Установить WordPress: Мы будем использовать официальную WordPress и MariaDB Образы докеров.
  3. Установите MariaDB: Это один из самых популярных серверов баз данных в мире. Это сделано первыми разработчиками MySQL. MariaDB разрабатывается как программное обеспечение с открытым исходным кодом и как реляционная база данных предоставляет интерфейс SQL для доступа к данным.
  4. Установить PhpMyAdmin: Это бесплатный программный инструмент, написанный на PHP, предназначенный для администрирования MySQL через Интернет.
  5. Создайте сайт WordPress:

Давайте начнем!

Установите Docker Compose:

Сначала установите Python Pip:

sudo apt-get install python-pip

Теперь вы можете установить Docker Compose:

преобразовать строку в дату Java
sudo pip установить docker-compose

Установите WordPress:

Создайте каталог wordpress:

mkdir wordpress

Войдите в этот каталог wordpress:

cd wordpress /

В этом каталоге создайте файл Docker Compose YAML, затем отредактируйте его с помощью gedit:

sudo gedit docker-compose.yml

Вставьте следующие строки кода в этот yaml файл:

wordpress: image: wordpress ссылки: - wordpress_db: mysql ports: - 8080: 80 wordpress_db: image: mariadb environment: MYSQL_ROOT_PASSWORD: edureka phpmyadmin: image: corbinu / docker-phpmyadmin ссылки: - wordpress_db: mysql ports: - 8181: 80 environment: MYSQL_USERNAME: корень MYSQL_ROOT_PASSWORD: edureka

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

wordpress_db: ... среда: MYSQL_ROOT_PASSWORD: edureka ...

Это установит переменную среды внутри контейнера wordpress_db с именем MYSQL_ROOT_PASSWORD с желаемым паролем. Образ MariaDB Docker настроен на проверку этой переменной среды при запуске и позаботится о настройке БД с учетной записью root с паролем, определенным как MYSQL_ROOT_PASSWORD.

wordpress: ... порты: - 8080: 80 ...

Первый номер порта - это номер порта на хосте, а второй номер порта - это порт внутри контейнера. Таким образом, эта конфигурация перенаправляет запросы на порт 8080 хоста на порт 80 веб-сервера по умолчанию внутри контейнера.

phpmyadmin: изображение: corbinu / docker-phpmyadmin ссылки: - wordpress_db: порты mysql: - 8181: 80 среда: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka

Это захватывает docker-phpmyadmin от члена сообщества corbinu, связывает его с нашим контейнером wordpress_db с именем mysql (это означает, что изнутри контейнера phpmyadmin ссылки на имя хоста mysql будут перенаправлены в наш контейнер wordpress_db), выставляет его порт 80 на порт 8181 сервера хост-систему и, наконец, устанавливает пару переменных среды с нашим именем пользователя и паролем MariaDB. Это изображение не получает автоматически переменную окружения MYSQL_ROOT_PASSWORD из окружения wordpress_dbcontainer, как это делает изображение wordpress. На самом деле нам нужно скопировать строку MYSQL_ROOT_PASSWORD: edureka из контейнера wordpress_db и установить для имени пользователя значение root.

Теперь запустите группу приложений:

docker-compose up -d

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

Теперь в браузере перейдите на порт 8080, используя свой общедоступный IP-адрес или имя хоста, как показано ниже:

локальный: 8080

Заполните эту форму и нажмите «Установить WordPress».

По завершении снова посетите IP-адрес вашего сервера (на этот раз используя порт 8181, например localhost: 8181). Вас приветствует экран входа в phpMyAdmin:

Идите вперед и войдите, используя имя пользователя root и пароль, которые вы установили в файле YAML, и вы сможете просматривать свою базу данных. Вы заметите, что на сервере есть база данных Wordpress, которая содержит все данные из вашей установки WordPress.

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

Если вы нашли этот блог Docker Container актуальным, ознакомьтесь с от Edureka, надежной компании онлайн-обучения с сетью из более чем 250 000 довольных учащихся по всему миру. Курс Edureka DevOps Certification Training помогает учащимся получить опыт в различных процессах и инструментах DevOps, таких как Puppet, Jenkins, Docker, Nagios, Ansible, Chef, Saltstack и GIT для автоматизации нескольких этапов в SDLC.

Есть ко мне вопрос? Пожалуйста, отметьте это в разделе комментариев, и я вернусь к вам.