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

Estamos lutando com um problema comum de tentar fornecer uma instância Oracle 11g para nossos desenvolvedores testarem. Nossos agentes de compilação padrão são baseados no Ubuntu 12.04, mas a Oracle suporta apenas OS baseados em RedHat.

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

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

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

Obrigado.

Se o Oracle Express for adequado para você:

  1. Baixar Oracle XE 11g rpm.
  2. Converter rpm para deb usando alien.
  3. "Extrair" o pacote deb usando o comando dpkg-deb.
  4. Modificar os scripts deb:
    • Mudar ["$1"!= "1"] Para ["$1"!= "instalar"] no início do preinst.
    • Mudança [ "$1" = "1" -o-z "$2"] para ["$1 " = " Configurar "- a-z" $2"] no início do postint.
    • Mudança [ "$1" = "0" ] para ["$1 " = "remover" - o "$1 " = "purge"] em prerm & amp; postrm.
    • Alterar 'chkconfig' para ' atualizar-rc.d ' comando em postinst & amp; prerm.
    • No script init: 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...
    • Adicionar dependências para controlar o arquivo: bc & amp; 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. Aqui como corrigi-lo:

  1. Comente a linha em / etc / init / mounted-dev.conf: [- e / dev / shm ] / / ln-s / run / shm/dev / shm.
  2. Adicionar uma linha em / etc / fstab: shm / dev / shm tmpfs tamanho=2G 0 0
  3. rm-f / dev / shm; mkdir / dev/ shm; montagem shm

Iniciar Oracle XE: Serviço oracle-XE configurar

Aqui está o meu garfo:

  • Reduzir o tamanho da imagem de 3.8 g para 825 MB
  • Inicialização do banco de dados movida para fora da fase de construção da imagem
  • Agora banco de dados inicializa na inicialização containeer sem Arquivos de banco de dados montados
  • Suporte para reutilização de mídia fora do contêiner
  • Adicionado desligamento gracioso na parada do contêiner
  • Removido sshd

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

Estou usando o seguinte imagem docker com um bom nível de sucesso.

Faça com que funcione com:

 docker pull wnameless/oracle-xe-11g

e

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

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

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

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

Você pode usar contêineres Oel 6.5 LXC Linux no topo do Ubuntu 14.04 conforme descrito passo a passo aqui no meu blog:

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

Se você espera obter qualquer tipo de suporte da Oracle sobre isso, esqueça essa ideia…

Oracle RDMS é um monstro… Não é para ser um simples, instale isso aqui e use o banco de dados à vontade. É intenso e a oracle quer que você saiba disso. Se seus desenvolvedores estão realmente ligados ao ubuntu, eu tentaria reavaliar sua necessidade do Oracle 11g (se você não precisa de uma distro corporativa, provavelmente não precisa de um RDMS corporativo). Parece muito que você está empregando o KISS com o agente de construção e esquecendo absolutamente todo o resto.

Eu olhei para docker apenas esta manhã, não me pareceu tão pronto para a produção, em tudo. tbh.

@ Sirex eu estaria interessado em ouvir quais problemas você teve com ele . Estive testando o docker beta com várias partes do nosso produto SaaS e ainda não tive um único problema.

@EEAA, navegando em torno de seus problemas do github quando as pessoas estavam pedindo o suporte RHEL (elefante na sala) e vendo como havia comentários considerando um afastamento necessário do aufs devido ao ubuntu abandoná-lo. O consenso era mudar para o btrfs, que não está fora da visualização da tecnologia até o RHEL7. Havia também algumas atitudes bastante caviler para colocar 3.10 + kernels personalizados em caixas RHEL para fazer docker ir. No geral, eu realmente gostei do conceito, mas acho que levará algum tempo até que eu fique feliz em lançá-lo. Apenas um rápido olhar superficial, então YMMV.

Para esclarecer-estou no negócio de engenharia de construção de uma empresa de software puro. Isso não é para consumo interno, mas para verificar se nossos aplicativos da web podem falar com a Oracle. Usamos o Oracle Express para isso e não precisamos do suporte da Oracle.