Docker. Создание контейнера с базой данных Oracle

Что такое Docker и зачем он нужен?

Docker – это специализированный контейнер, расположенный в среде виртуализации, предназначенный для “упаковки” в него приложения со всем его окружением и зависимостями. В настоящее время активно внедряется и успешно используется многими компаниями. Если раньше при разработке, развертывании и тестировании приложений использовались виртуальные машины с установленными на них операционными системами, то благодаря Doсker-контейнерам виртуализация получила новый виток развития. По сравнению с традиционным методом создания окружения (виртуальные машины), docker имеет ряд преимуществ:

  1. Потребление меньшего количества ресурсов инфраструктуры компьютера или сервера. При создании виртуальной машины нам прежде всего нужно определить ресурсы, которыми будет пользоваться эта машина, после установить необходимую операционную систему, далее развернуть приложение. Docker создает лишь одну виртуальную машину с единожды выделенными ресурсами, внутри которой будут создаваться контейнеры с необходимым содержимым. Например, вы работаете в среде Linux и вам необходимо развернуть приложения на Windows и MacOS. В обычном случае вы создадите виртуальные машины для каждой ОС. После развернете приложение и установите все зависимости. С помощью Docker вам стоит лишь создать два контейнера в которых будет приложение: один для MacOS, другой для Windows.
  2. Быстрая и гибкая настройка на любой операционной системе.
  3. Удобное управление.

Лучше всего понять и попробовать возможности Docker стоит на практике, поэтому давай те решим следующую задачу:

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

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

  1. Быстро об устройстве Docker
  2. Скачать и установить Docker
  3. Скачать Oracle Database Image
  4. Собрать образ Oracle Database
  5. Создание контейнера из образа базы данных Oracle
  6. Скачать sqldeveloper и подключиться к контейнеру

Быстро об устройстве Docker

Принцип работы докера достаточно прост. В основе лежит два понятия: образ (image) и контейнер (container). Образы служат основой для контейнеров. Другими словами, на основании образа создается контейнер и создается он с помощью Docker – daemon — фонового процесса. Огромное количество уже готовых образов можно найти на https://hub.docker.com/.

Скачать и установить Docker

Настало время скачать и установить Docker. Мы будем делать это на операционной системе Windows 10. И так, для начало заходим на сайт https://store.docker.com/editions/community/docker-ce-desktop-windows и скачиваем установочный файл.

Дожидаемся окончания загрузки и запускаем exe-файл.

Во время установки нажимаем всегда “Далее”. После завершения установки у вас должен появиться значок в углу экрана и статут RUNNING.

Если же его нет, то нажмите на ярлык на рабочем столе и у вас запуститься Docker. В случае же возникновения ошибки типа

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

Скачать Oracle Database Image

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

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

Собрать образ Oracle Database

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

В файле README.md дается инструкция по установке инстанса базы данных. Далее я дам вольный перевод этого документа и изрядно его сокращу для быстрого старта контейнера.

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

Обращаю внимания на то, что необходимо скачать файл для ОС 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 и введите следующую команду:

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

-s флаг версии se2.

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

Оно означает что создание образа прошло успешно и теперь мы можем перейти к созданию контейнера из этого образа.

Создание контейнера из образа базы данных Oracle

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

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

Если вы только установили Docker у вас должно быть два первых образа.

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

–name имя контейнера

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

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

После выполнения команды вы увидите следующее окно:

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

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

Отлично! Мы создали и запустили контейнер с базой данных Oracle! Проверим что он работает. Для этого вводим команду:

Ответ должен быть таким:

Обратите внимание, на состояние и порты tcp контейнера. Именно этот номер порта мы будем использовать для подключения к контейнеру из sqldeveloper.

Скачать sqldeveloper и подключиться к контейнеру

Если у вас нет sqldeveloper, то скачайте его по ссылке и установите.

Откройте sqldeveloper и создайте новое подключение, вписав следующие данные:

Далее нажимаете кнопку “Test” и в ответ вам должно прийти “Success”.

Отлично! Теперь вы можете изменять базу данных в контейнере извне!

5 comments On Docker. Создание контейнера с базой данных Oracle

  • Александр Никитаев

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

    • Николай Грибанов

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

  • Не сработал sh скрипт в PowerShell: не понимает его. Похоже, что нужно что-то доставлять для Windows. WSL вроде бы советуют, для поддержки bash? И запуск тогда “bash sh…” с командной строки…

  • Всё равно не получается: bash не “видит” docker теперь внутри скрипта. Хотя непосредственно из bash он видимый (добавил путь к docker в PATH). Решения пока не нашёл.

  • Всё понятно. Последовал муторный процесс инсталляции собственно docker под инсталлированной Ubuntu: действий оказалось гораздо больше, чем можно представить из данной статьи начинающему.

Оставить комментарий:

Ваш email не будет опубликован.