O Docker pode me ajudar a instalar o banco de dados Oracle 11g no Ubuntu?

O Docker pode me ajudar a instalar o banco de dados Oracle 11g no Ubuntu?

Estamos enfrentando um problema comum ao tentar fornecer uma instância do Oracle 11g para nossos desenvolvedores testarem. Nossos agentes de construção padrão são baseados no Ubuntu 12.04, mas a Oracle oferece suporte apenas a sistemas operacionais baseados em RedHat.

Existem alguns hacks sobre a instalação do Oracle no Ubuntu circulando pela rede, mas eles parecem ser muito frágeis e uma questão de acerto e erro.

Queremos evitar ter que oferecer suporte a uma configuração inteira do servidor de compilação Puppet em cima do RedHat(/CentOS) apenas para oferecer suporte ao Oracle, então eu estava começando a me perguntar se poderíamos empregar o Docker para fornecer um ambiente semelhante ao RedHat necessário apenas para o Oracle em topo de nossos sistemas Ubuntu padrão. A ideia é que o Oracle seja executado em seu próprio contêiner, mas o restante do agente de construção ainda será executado no Ubuntu padrão, capaz de se comunicar com o Oracle por TCP.

Eu sei o que são LXCs e a diferença entre eles e a virtualização completa como KVM/VirtualBox etc., mas queria saber se isso ainda seria possível.

Obrigado.

Responder1

Aqui está meu garfo:

  • Reduza o tamanho da imagem de 3,8 G para 825 MB
  • A inicialização do banco de dados saiu da fase de construção da imagem
  • Agora o banco de dados é inicializado na inicialização do contêiner sem nenhum arquivo de banco de dados montado
  • Suporte à reutilização de mídia fora do contêiner
  • Adicionado desligamento normal na parada do contêiner
  • SSD removido

Você pode conferir aqui:
https://registry.hub.docker.com/u/sath89/oracle-xe-11g/
https://github.com/MaksymBilenko/docker-oracle-xe-11g

Responder2

Se o Oracle Express for adequado para você:

  1. Baixe o Oracle XE 11g rpm.
  2. Converta rpm em deb usando alien.
  3. "Extraia" o pacote deb usando o comando dpkg-deb.
  4. Modifique os scripts deb:
    • Altere [ "$1" != "1" ] para [ "$1" != "install" ] no início do preinst.
    • Altere [ "$1" = "1" -o -z "$2" ] para [ "$1" = "configure" -a -z "$2" ] no início do postint.
    • Altere [ "$1" = "0" ] para [ "$1" = "remove" -o "$1" = "purge" ] em prerm e postrm.
    • Altere o comando 'chkconfig' para 'update-rc.d' no postinst & prerm.
    • No script de inicialização: remova o caminho absoluto de alguns comandos do sistema; corrija /etc/sysconfig/oracle-xe para /etc/default/oracle-xe; corrija /var/lock/subsys para /var/lock; e assim por diante...
    • Adicione dependências ao arquivo de controle: bc & libaio1.
  5. Construa o pacote deb usando o comando deb.

Agora você tem um pacote deb do Oracle XE 11g. Instale-o!

Mas ainda há um problema: /dev/shm. Veja como consertar:

  1. Comente a linha em /etc/init/mounted-dev.conf: [ -e /dev/shm ] || ln -s /run/shm /dev/shm.
  2. Adicione uma linha em /etc/fstab: shm /dev/shm tmpfs size=2g 0 0
  3. rm -f /dev/shm; mkdir /dev/shm; monte shm

Inicie o Oracle XE: serviço oracle-xe configure

Responder3

Estou usando o seguinteimagem da janela de encaixecom um bom nível de sucesso.

Faça-o funcionar com:

 docker pull wnameless/oracle-xe-11g

e

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

Responder4

Esta é definitivamente uma abordagem viável. Usamos Ubuntu 14.04 para nossas máquinas host e executamos várias instâncias Oracle 11g em contêineres Docker também para fins de desenvolvimento.

Atualmente (Docker 1.5) para 11g e 12c, o principal problema é o limite de memória compartilhada codificada do DockerEdição #2606. Atualmente, existem duas soluções alternativas para isso:

  1. Use docker run --privileged ...e remonte /dev/shm com mais memória antes de iniciar a instância
  2. Modifique e reconstrua o Docker você mesmo. Para este caso eu montei um Dockerfile para 12c que permite criar uma imagem de uma só vez:https://github.com/arpagaus/docker-oracle-12c

informação relacionada