Назад | Перейти на главную страницу

Может ли Docker помочь мне установить базу данных Oracle 11g на Ubuntu?

Мы пытаемся решить распространенную проблему: предоставить нашим разработчикам экземпляр Oracle 11g для тестирования. Наши стандартные агенты сборки основаны на Ubuntu 12.04, но Oracle поддерживает только ОС на базе RedHat.

В сети есть несколько хакерских приемов по установке Oracle на Ubuntu, но они кажутся очень хрупкими и могут быть случайными.

Мы хотим избежать необходимости поддерживать всю конфигурацию Puppet сервера сборки поверх RedHat (/ CentOS) только для поддержки Oracle, поэтому я начал задаваться вопросом, можем ли мы использовать Docker для обеспечения среды, подобной RedHat, необходимой только для Oracle на вершина наших стандартных систем Ubuntu. Идея состоит в том, что Oracle будет работать в собственном контейнере, но остальная часть агента сборки по-прежнему будет работать на стандартной Ubuntu, способной взаимодействовать с Oracle через TCP.

Я знаю, что такое LXC и чем они отличаются от полноценной виртуализации, такой как KVM / VirtualBox и т. Д., Но мне было интересно, возможно ли это еще.

Спасибо.

Если Oracle Express вам подходит:

  1. Скачать Oracle XE 11g rpm.
  2. Преобразуйте rpm в deb с помощью alien.
  3. «Извлеките» пакет deb с помощью команды dpkg-deb.
  4. Измените скрипты deb:
    • Измените ["$ 1"! = "1"] на ["$ 1"! = "Install"] в начале preinst.
    • Измените ["$ 1" = "1" -o -z "$ 2"] на ["$ 1" = "configure" -a -z "$ 2"] в начале сообщения.
    • Измените ["$ 1" = "0"] на ["$ 1" = "remove" -o "$ 1" = "purge"] в prerm и postrm.
    • Измените команду 'chkconfig' на 'update-rc.d' в postinst & prerm.
    • В сценарии инициализации: удалить абсолютный путь некоторых системных команд; исправить / etc / sysconfig / oracle-xe на / etc / default / oracle-xe; исправить / var / lock / subsys в / var / lock; и так далее...
    • Добавьте зависимости в управляющий файл: bc & libaio1.
  5. Соберите пакет deb с помощью команды deb.

Теперь у вас есть deb-пакет Oracle XE 11g. Установите его!

Но есть проблема: / dev / shm. Вот как это исправить:

  1. Прокомментируйте строку в /etc/init/mounted-dev.conf: [-e / dev / shm] || ln -s / run / shm / dev / shm.
  2. Добавьте строку в / etc / fstab: shm / dev / shm tmpfs size = 2g 0 0
  3. rm -f / dev / shm; mkdir / dev / shm; крепление шм

Запуск Oracle XE: настройка службы oracle-xe

Я использую следующие образ докера с хорошим уровнем успеха.

Заставьте его работать с:

 docker pull wnameless/oracle-xe-11g

и

 docker run -d -p 49160:22 -p 49161:1521 wnameless/oracle-xe-11g

Вот моя вилка:

  • Уменьшить размер изображения с 3,8 ГБ до 825 МБ
  • Инициализация базы данных перенесена из фазы построения образа
  • Теперь база данных инициализируется при запуске контейнера без подключенных файлов базы данных.
  • Поддержка повторного использования медиа вне контейнера
  • Добавлено плавное завершение работы при остановке контейнера
  • Удален sshd

Вы можете проверить здесь:
https://registry.hub.docker.com/u/sath89/oracle-xe-11g/
https://github.com/MaksymBilenko/docker-oracle-xe-11g

Я могу подтвердить, что Oracle XE работает в Docker. единственная проблема в том, что внутри контейнера shm настроен только на 65356k см. https://github.com/dotcloud/docker/issues/2606 Единственный обходной путь на данный момент - изменить шаблон lxc и перекомпилировать докер (что несложно)

Это определенно реальный подход. Мы используем Ubuntu 14.04 для наших хост-компьютеров и запускаем несколько экземпляров Oracle 11g в контейнерах Docker в целях разработки.

В настоящее время (Docker 1.5) как для 11g, так и для 12c основной проблемой является жестко заданный лимит общей памяти Docker. Выпуск № 2606. В настоящее время для этого есть два обходных пути:

  1. Использовать docker run --privileged ... и перемонтируйте / dev / shm с дополнительной памятью перед запуском экземпляра
  2. Измените и перестройте Docker самостоятельно. Для этого случая я собрал Dockerfile для 12c, который позволяет создать образ за один раз: https://github.com/arpagaus/docker-oracle-12c

Вы можете использовать OEL 6.5 LXC Linux Containers поверх Ubuntu 14.04, как описано шаг за шагом здесь, в моем блоге:

https://sites.google.com/site/nandydandyoracle/technologies/lxc/oracle-lxc-vlc