Вы находитесь на странице: 1из 8

Лабораторная работа 7

Контейнерная виртуализация на уровне операционной системы

Цель работы

Цель работы заключается в ознакомлении с механизмом контейнеризации,


как одним из механизмов управления контейнерными приложениями

Теоретические сведения
Docker - это платформа с открытым исходным кодом для создания,
развертывания и управления контейнерными приложениями.
Docker позволяет разработчикам упаковывать приложения в контейнеры -
стандартизированные исполняемые компоненты, которые объединяют исходный
код приложения со всеми библиотеками операционной системы (ОС) и
зависимостями, необходимыми для запуска кода в любой среде.
В то время как разработчики могут создавать контейнеры без Docker, Docker
упрощает, упрощает и делает их безопаснее для создания, развертывания и
управления контейнерами. По сути, это инструментарий, который позволяет
разработчикам создавать, развертывать, запускать, обновлять и останавливать
контейнеры с помощью простых команд и автоматизации работы.
Применительно к Windows, контейнеры Docker полностью изолированы от
своей хост-системы Windows. Поэтому, когда вы удаляете контейнер, все
изменения, сделанные вами в этом контейнере, также удаляются. Если вы
хотите, чтобы файлы конфигурации или другие ресурсы оставались
постоянными, попробуйте смонтировать папки Windows на контейнерах.

Зачем использовать контейнеры?

Контейнеры стали возможным благодаря операционной системе (ОС), а


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

Контейнеры предлагают все преимущества виртуальных машин, в том числе


изоляцию приложений, экономичную масштабируемость и доступность. Но
дополнительный уровень абстракции (на уровне ОС) предлагает важные
дополнительные преимущества:

 Легкий вес: в отличие от виртуальных машин, контейнеры не несут


полезной нагрузки всего экземпляра ОС - они включают только процессы
ОС и зависимости, необходимые для выполнения кода.
 Повышение эффективности использования ресурсов. С контейнерами
вы можете запускать в несколько раз больше копий приложения на том же
оборудовании, что и на виртуальных машинах. Это может сократить ваши
облачные расходы.
 Повышение производительности труда разработчиков. По сравнению с
виртуальными машинами контейнеры быстрее и проще в развертывании,
подготовке и перезапуске. Это делает их идеальными для использования
в конвейерах с непрерывной интеграцией и непрерывной доставкой (CI /
CD) и лучше подходит для групп разработчиков,
внедряющих практики Agile и DevOps .

Зачем использовать Docker?

Docker настолько популярен сегодня, что «Docker» и «контейнеры»


используются взаимозаменяемо, но первые технологии, связанные с
контейнерами, были доступны в течение многих лет - даже десятилетий - до
того, как Docker был представлен широкой публике в 2013 году. В частности, в
2008 году LXC ( для L inu X C ontainers) была реализована в ядре Linux,
полностью обеспечивая виртуализацию для одного экземпляра Linux.

Первые версии Docker использовали исключительно LXC, но вскоре Docker


разработал собственную технологию персонализации контейнеров, которая
позволила следующее:

 Улучшенная и беспроблемная переносимость: хотя контейнеры LXC


часто ссылаются на конфигурации, специфичные для машины,
контейнеры Docker работают без изменений в любом настольном
компьютере, центре обработки данных и облачной среде.
 Еще меньший вес и более детальные обновления: с LXC можно
объединить несколько процессов в одном контейнере. В контейнерах
Docker в каждом контейнере может выполняться только один процесс. Это
позволяет создать приложение, которое может продолжать работать, пока
одна из его частей отключена для обновления или ремонта.
 Автоматическое создание контейнера: Docker может автоматически
создавать контейнер на основе исходного кода приложения.
 Управление версиями контейнера: Docker может отслеживать версии
образа контейнера, выполнять откат к предыдущим версиям и
отслеживать, кто создал версию и как. Он даже может загружать только
дельты между существующей версией и новой.
 Повторное использование контейнера: Существующие контейнеры
могут использоваться в качестве базовых изображений - по сути, как
шаблоны для создания новых контейнеров.
 Общие библиотеки контейнеров.  Разработчики могут получить доступ к
реестру с открытым исходным кодом, содержащему тысячи
пользовательских контейнеров.

По этим причинам принятие Docker быстро взорвалось и продолжает


расти. Docker Inc. сообщает о 105 миллиардах загрузок контейнеров
(по сравнению с 50 миллиардами год назад) и более 750 корпоративных
клиентов Docker.

Задание на лабораторную работу

В ходе лабораторной работы необходимо создать окружение, для


выполнения, например, тестирования запросов к базе данных. Для этих целей
мы будем использовать несколько контейнеров с базой данных. В качестве
СУБД данных будем использовать Oracle. То есть, для каждой тестовой базы
данных Oracle мы создадим свой собственный контейнер.
Мы рассмотрим один из вариантов решения данной задачи.

Для решения данной задачи скачаем Docker. В качестве основной ОС будем


использовать Windows 10. Скачать можно по ссылке
https://hub.docker.com/editions/community/docker-ce-desktop-windows.

Рисунок 1- Скачивание с сайта разработчика

После завершения установки Docker просто запускаем его. Установка


завершена.

После установки Docker нам необходимо собрать образ базы данных Oracle.
Для этого нужно перейти по ссылке https://github.com/oracle/docker-images и
скачать репозиторий на свой компьютер.

Рисунок 2 - Репозиторий образа данных базы Oracle

Это официальный репозиторий компании Oracle с файлами, необходимыми


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

Далее необходимо собрать образ Oracle Database. Для нашей цели, после
скачивания, необходимо перейти в папку OracleDatabase/SingleInstance/ и
открыть файл README.md. (его так же можно открыть в браузере, сделав
аналогичные действия в репозитории GitHub.)
Рисунок 3 - README.md

В файле README.md дается инструкция по установке инстанса базы


данных. Прежде всего нам необходимо скачать одну из представлены в файле
четырех баз данных. Мы будем устанавливать Oracle Database 12c Release 2
(12.2.0.1) Standard Edition 2. Для этого переходим по ссылке на официальный
сайт Oracle и скачиваем нужный zip-архив. (для скачивания нужно
авторизоваться).
Рисунок 4 - скачивание с сайт Oracle

Обращаю внимания на то, что необходимо скачать файл для ОС Linux.


Теперь необходимо полученный архив переместить в папку \docker-images-
master\OracleDatabase\SingleInstance\dockerfiles\12.2.0.1. 
Распаковывать его НЕ НАДО!

Мы выполнили все необходимые операции перед создание образа (image)


Docker базы. Теперь необходимо запустить скрипт, который соберет образ базы
данных. Он находится в папке \docker-images-
master\OracleDatabase\SingleInstance\dockerfiles\buildDockerImage.sh. Запускать
мы его будем с помощью PowerShell. Откройте PowerShell в папке с
фалом buildDockerImage.sh или перейдите туда, используя команду cd и введите
следующую команду:

.\buildDockerImage.sh -v 12.2.0.1 -s

где
-v флаг для обозначения собираемой версии,
-s флаг версии se2.

После создания образа вы должны увидеть следующее сообщение:


#########################
DATABASE IS READY TO USE!
#########################

Это означает что создание образа прошло успешно и теперь мы можем


перейти к созданию контейнера из этого образа.

Далее создадим контейнер из образа базы данных Oracle.


Для этого нам необходимо выполнить две операции. Во-первых, выполнить
команду
docker images

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

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


команду:

docker run --name testDB -p 3333:1521 -p 3334:5500 529379184adc

где
–name имя контейнера
-p внешний порты, для доступа к контейнеру из вне.

В самом конце IMAGE_ID образа oracle/database.

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

После создания контейнера вы увидите сообщение:


#########################
DATABASE IS READY TO USE!
#########################

Мы создали и запустили контейнер с базой данных Oracle! Проверим что он


работает. Для этого вводим команду:
Docker ps

Далее, например, sqldeveloper и создайте новое подключение, вписав данные


полученные на предыдущих шагах.
Рисунок 5 - Подключение в sqldeveloper

Оценить