Контейнеризация как современный способ виртуализации | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 18 мая, печатный экземпляр отправим 22 мая.

Опубликовать статью в журнале

Автор:

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №49 (339) декабрь 2020 г.

Дата публикации: 04.12.2020

Статья просмотрена: 320 раз

Библиографическое описание:

Евстратов, В. В. Контейнеризация как современный способ виртуализации / В. В. Евстратов. — Текст : непосредственный // Молодой ученый. — 2020. — № 49 (339). — С. 7-9. — URL: https://moluch.ru/archive/339/76072/ (дата обращения: 10.05.2024).



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

Ключевые слова: контейнеризация, виртуализация, микросервисы, docker, dockerfile, wordpress, phpmyadmin, nginx

Введение.

Контейнеризация — это метод виртуализации, при котором ядро операционной системы поддерживает несколько изолированных экземпляров пространства пользователя вместо одного [1] (как в виртуальных машинах).

Виртуализация в общем случае решает проблему зависимости программного обеспечения от окружения, в котором оно запускается. Например, если вы написали программу под Windows, то для того, чтобы запустить её на Linux’е необходимо создать изолированное окружение. Обычно изолированное окружение представляет собой виртуальную операционную систему.

Для решения проблемы из примера виртуальная ОС подходит хорошо. Но что, если нам необходимо запустить много разных приложений, причем они зависят не только от операционной системы, но и от версий стороннего ПО, которое установлено в данных ОС. Для создания одного изолированного виртуального пространства (виртуальная операционная система) требуется довольно много ресурсов гостевой ОС. Например, для создания виртуальной машины Linux требуется в среднем не менее 10 Гб [2], и это без данных.

Сравнение контейнеров и виртуальных машин.

Контейнеры и виртуальные машины обладают схожими преимуществами изоляции и распределения ресурсов, но функционируют по-разному, поскольку контейнеры виртуализируют операционную систему, а не аппаратное обеспечение. Контейнеры более портативны и эффективны. [3]

Контейнеры

Контейнеры — это абстракция на уровне приложения, которая хранит код и зависимости окружения вместе. Несколько контейнеров могут работать на одной машине и совместно использовать ядро ОС с другими контейнерами, каждый из которых работает как изолированный процесс в пользовательском пространстве. Контейнеры занимают меньше места, чем виртуальные машины (образы контейнеров обычно имеют размер в десятки МБ), могут обрабатывать больше приложений и требуют меньшего количества виртуальных машин и операционных систем. [3]

Виртуальная машина

Виртуальные машины (ВМ) — это абстракция физического оборудования, превращающая один сервер во множество серверов. Гипервизор позволяет запускать несколько виртуальных машин на одной машине. Каждая виртуальная машина включает в себя полную копию операционной системы, приложения, необходимые двоичные файлы и библиотеки — занимая десятки Гб. Виртуальные машины также могут медленно загружаться. [3]

Графическое сравнение контейнеров и виртуальных машин представлено на рисунках 1 и 2.

Виртуальные машины управляются гипервизором

Рис. 1. Виртуальные машины управляются гипервизором

Контейнеры управляются докером, дополнительные ВМ не требуются

Рис. 2. Контейнеры управляются докером, дополнительные ВМ не требуются

Растущая популярность контейнеров.

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

Запуск собственного Docker -контейнера.

Для создания и запуска контейнера необходимо выполнить следующие шаги:

  1. Написать Dockerfile
  2. Создать образ контейнера из Dokcerfile
  3. С помощью образа запустить экземпляр контейнера

Создадим простейший контейнер, который будет содержать web‑сервер nginx, wordpress и phpmyadmin веб-сайты:

Dockerfile:

FROM debian:buster

RUN apt-get update && \

apt-get -y install nginx mariadb-server php7.3-fpm php7.3-mysql openssl

ADD srcs/wordpress.tar.gz /var/www/

COPY srcs/nginx.conf /etc/nginx/nginx.conf

COPY srcs/wp_db_create.sql /etc/

COPY srcs/container_script.sh /etc/

EXPOSE 80 443

RUN mv /var/www/phpMyAdmin-4.9.0.1-all-languages /var/www/phpmyadmin && \

chown -R www-data:www-data /var/www/* && \

rm /etc/nginx/sites-enabled/default && \

service mysql start && \

mysql -u root < /etc/wp_db_create.sql && \

openssl req \

—newkey rsa:2048 -nodes -keyout etc/ssl/certs/localhost.key \

—x509 -days 365 -out etc/ssl/certs/localhost.crt -subj \

"/C=RU/ST=Kamchatka/L=P-Kamchatskii/O=KSTU/CN=localhost» && \

chmod 777 /etc/container_script.sh

CMD /etc/container_script.sh

Ключевое слово FROM определяет базовый дистрибутив, из которого будет собран контейнер.

Ключевое слово RUN определяет команды, которые будут запущены внутри контейнера во время его сборки. В данном случае мы устанавливаем nginx, клиент базы данных, php, и ssl клиент для возможности защищенного подключения к wordpress и phpmyadmin.

Ключевое слово COPY определяет файлы, которые будут скопированы из основной операционной системы внутрь контейнера. В данном примере мы копируем файлы будущих сайтов и.sh скрипт, который будет запускаться при старте контейнера (ключевое слово CMD).

Ключевое слово EXPOSE определяет, какие порты будут открыты у контейнера для взаимодействия с внешней средой. В нашем примере это 80 и 443 порты для подключения к веб-сайтам по протоколам http и https соответственно.

Для создания образа (image) контейнера необходимо выполнить команду:

docker build –t ContainerName.

Точка в конце означает текущую директорию. В общем случае там прописывается путь до dokcerfile.

На экране будет показан статус выполнения команд из докерфайла. Как только образ контейнера будет собран мы можем запустить команду

docker run –p 80:80 –p 443:443 –d ContainerName

Флаги p означают проброс портов между контейнером и основной ОС. Флаг d означает что мы запускаем контейнер в фоновом режиме (detach mode). После того как контейнер запущен, мы можем убедиться, что контейнер работает, выполнив команду:

docker ps

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

Полностью исходный код и файлы проекты можно посмотреть в github репозитории автора [https://github.com/vesord/ft_server]

Литература:

  1. Контейнеризация. — Текст: электронный // Википедия свободная энциклопедия. — URL: https://ru.wikipedia.org/wiki/Контейнеризация (дата обращения 01.12.2020)
  2. Ибраев М., Месропян Н. Контейнеризация простым языком. — Текст: электронный // Интервью. — URL: https://habr.com/ru/company/southbridge/blog/530226/ (дата обращения 30.11.2020)
  3. What is a Container. — Текст: электронный // Официальный сайт Docker. — URL: https://www.docker.com/resources/what-container (дата обращения 02.12.2020)
  4. Docker adoption. — Текст: электронный // Datadog, the essential monitoring and security platform for cloud applications. — URL: https://www.datadoghq.com/docker-adoption/ (дата обращения 03.12.2020)
Основные термины (генерируются автоматически): COPY, контейнер, RUN, ключевое слово, CMD, EXPOSE, FROM, машина, операционная система, виртуальная машина.


Похожие статьи

Введение в контейнеры, виртуальные машины и docker

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

Чат-бот как средство сопровождения образовательного процесса

Ключевые слова: чат-бот, образование. Чат-бот — это программа, которая с помощью текстовых и аудио сообщений имитирует общение с человеком. Чаще всего чат-боты используются в мессенджерах (программа для мгновенной отправки сообщений).

Применение возможностей Python для автоматизации...

Ключевые слова: Python, PyQt5, python-docx, программа для ЭВМ, база данных.

Добавление в контейнеры виджетов и других контейнеров происходит с помощью методов addWidget() и addLayout().

Ключевые слова:web-интерфейс, информационная система, база данных.

История в загадках. Петр I. Царь-реформатор | Статья в журнале...

Ключевые слова: Петр I, реформы, авторские загадки, дети. В 2022 году в России отмечается 350 лет со дня рождения Петра I. По итогам правления его принято называть Великим, а сам он себя провозгласил первым Императором Всероссийским.

Обзор сервиса для разработки дистанционных образовательных...

 В статье выполнен краткий обзор сервиса разработки дистанционных образовательных ресурсов «Google Класс». Описаны основные возможности и элементы интерфейса приложения «Google Класс». Ключевые слова: сервисы, Google, дистанционный образовательный ресурс.

Виды тестовых заданий международного исследования...

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

Среди вышеперечисленных международных систем по оценке знаний учащихся пока нет ICILS (международное исследование компьютерной и...

Разработка 3D-моделей в Blender для интеграции в Unity

Данная статья описывает процесс подготовки объектов в бесплатном программном обеспечении Blender с целью дальнейшей их интеграции в межплатформенную среду разработки Unity с целью дальнейшего использования в моделировании или разработки виртуальных...

Обзор систем машинного перевода | Статья в журнале...

В данной статье рассмотрены основные виды систем машинного перевода. Рас-смотрены основные системы машинного перевода, произведено их сравнение и анализ. Сделаны предположения о возможных путях развития подобных систем.

Особенности изучения линейного алгоритма на flowcode

Ключевые слова: микроконтроллеры, линейный алгоритм, flowcode. Подготовка высококвалифицированного специалиста, востребованного в условиях рынка, способного самостоятельно принимать решения в рамках профессиональной компетентности...

Похожие статьи

Введение в контейнеры, виртуальные машины и docker

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

Чат-бот как средство сопровождения образовательного процесса

Ключевые слова: чат-бот, образование. Чат-бот — это программа, которая с помощью текстовых и аудио сообщений имитирует общение с человеком. Чаще всего чат-боты используются в мессенджерах (программа для мгновенной отправки сообщений).

Применение возможностей Python для автоматизации...

Ключевые слова: Python, PyQt5, python-docx, программа для ЭВМ, база данных.

Добавление в контейнеры виджетов и других контейнеров происходит с помощью методов addWidget() и addLayout().

Ключевые слова:web-интерфейс, информационная система, база данных.

История в загадках. Петр I. Царь-реформатор | Статья в журнале...

Ключевые слова: Петр I, реформы, авторские загадки, дети. В 2022 году в России отмечается 350 лет со дня рождения Петра I. По итогам правления его принято называть Великим, а сам он себя провозгласил первым Императором Всероссийским.

Обзор сервиса для разработки дистанционных образовательных...

 В статье выполнен краткий обзор сервиса разработки дистанционных образовательных ресурсов «Google Класс». Описаны основные возможности и элементы интерфейса приложения «Google Класс». Ключевые слова: сервисы, Google, дистанционный образовательный ресурс.

Виды тестовых заданий международного исследования...

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

Среди вышеперечисленных международных систем по оценке знаний учащихся пока нет ICILS (международное исследование компьютерной и...

Разработка 3D-моделей в Blender для интеграции в Unity

Данная статья описывает процесс подготовки объектов в бесплатном программном обеспечении Blender с целью дальнейшей их интеграции в межплатформенную среду разработки Unity с целью дальнейшего использования в моделировании или разработки виртуальных...

Обзор систем машинного перевода | Статья в журнале...

В данной статье рассмотрены основные виды систем машинного перевода. Рас-смотрены основные системы машинного перевода, произведено их сравнение и анализ. Сделаны предположения о возможных путях развития подобных систем.

Особенности изучения линейного алгоритма на flowcode

Ключевые слова: микроконтроллеры, линейный алгоритм, flowcode. Подготовка высококвалифицированного специалиста, востребованного в условиях рынка, способного самостоятельно принимать решения в рамках профессиональной компетентности...

Задать вопрос