我们正在努力解决一个常见问题,即尝试为我们的开发人员提供一个 Oracle 11g 实例进行测试。我们的标准构建代理基于 Ubuntu 12.04,但 Oracle 仅支持基于 RedHat 的操作系统。
网上流传着一些关于在 Ubuntu 上安装 Oracle 的技巧,但它们似乎非常脆弱,而且很容易碰运气。
我们希望避免仅仅为了支持 Oracle 而必须在 RedHat(/CentOS) 之上支持整个构建服务器 Puppet 配置,所以我开始怀疑我们是否可以使用 Docker 来提供 Oracle 所需的类似 RedHat 的环境在我们的标准 Ubuntu 系统之上。这个想法是 Oracle 将在自己的容器中运行,但构建代理的其余部分仍将在标准 Ubuntu 上运行,能够通过 TCP 与 Oracle 通信。
我知道 LXC 是什么以及它们与成熟的虚拟化(如 KVM/VirtualBox 等)之间的区别,但我想知道它是否仍然可行。
谢谢。
如果 Oracle Express 适合您:
现在您有了一个 Oracle XE 11g 的 deb 包。安装它!
但是还有一个问题:/dev/shm。在这里如何解决它:
启动Oracle XE:service oracle-xe configure
我正在使用以下docker 图像并取得了很好的成功。
让它运行:
和
这是我的叉子:
您可以在这里查看:
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 模板并重新编译 docker(这很容易)
这绝对是一种可行的方法。我们将 Ubuntu 14.04 用于我们的主机,并在 Docker 容器中运行多个 Oracle 11g 实例以用于开发目的。
目前(Docker 1.5)对于 11g 和 12c 的主要问题是 Docker 的硬编码共享内存限制问题 #2606。目前有两种解决方法:
docker run --privileged ...
并重新挂载 /dev/shm 并使用更多内存您可以在 Ubuntu 14.04 上使用 OEL 6.5 LXC Linux 容器,如我博客中的分步所述:
https://sites.google.com/site/nandydandyoracle/technologies/lxc/oracle-lxc-vlc