AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 538549
Accepted
Amos Shapira
Amos Shapira
Asked: 2013-09-13 16:31:21 +0800 CST2013-09-13 16:31:21 +0800 CST 2013-09-13 16:31:21 +0800 CST

Docker 可以帮我在 Ubuntu 上安装 Oracle 11g 数据库吗?

  • 772

我们正在努力解决一个常见问题,即尝试为我们的开发人员提供一个 Oracle 11g 实例进行测试。我们的标准构建代理基于 Ubuntu 12.04,但 Oracle 仅支持基于 RedHat 的操作系统。

网上流传着一些关于在 Ubuntu 上安装 Oracle 的技巧,但它们似乎非常脆弱,而且很容易碰运气。

我们希望避免仅仅为了支持 Oracle 而必须在 RedHat(/CentOS) 之上支持整个构建服务器 Puppet 配置,所以我开始怀疑我们是否可以使用 Docker 来提供 Oracle 所需的类似 RedHat 的环境在我们的标准 Ubuntu 系统之上。这个想法是 Oracle 将在自己的容器中运行,但构建代理的其余部分仍将在标准 Ubuntu 上运行,能够通过 TCP 与 Oracle 通信。

我知道 LXC 是什么以及它们与成熟的虚拟化(如 KVM/VirtualBox 等)之间的区别,但我想知道它是否仍然可行。

谢谢。

ubuntu
  • 6 6 个回答
  • 6972 Views

6 个回答

  • Voted
  1. user200851
    2013-11-29T02:49:32+08:002013-11-29T02:49:32+08:00

    如果 Oracle Express 适合您:

    1. 下载 Oracle XE 11g rpm。
    2. 使用外星人将 rpm 转换为 deb。
    3. 使用 dpkg-deb 命令“提取” deb 包。
    4. 修改 deb 脚本:
      • 在 preinst 的开头将 [ "$1" != "1" ] 更改为 [ "$1" != "install" ]。
      • 将 postint 开头的 [ "$1" = "1" -o -z "$2" ] 更改为 [ "$1" = "configure" -a -z "$2" ]。
      • 在 prerm & postrm 中将 [ "$1" = "0" ] 更改为 [ "$1" = "remove" -o "$1" = "purge" ]。
      • 在 postinst & prerm 中将 'chkconfig' 更改为 'update-rc.d' 命令。
      • 在初始化脚本中:删除一些系统命令的绝对路径;将 /etc/sysconfig/oracle-xe 修复为 /etc/default/oracle-xe;将 /var/lock/subsys 修复为 /var/lock;等等...
      • 将依赖项添加到控制文件:bc & libaio1.
    5. 使用 deb 命令构建 deb 包。

    现在您有了一个 Oracle XE 11g 的 deb 包。安装它!

    但是还有一个问题:/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;安装 shm

    启动Oracle XE:service oracle-xe configure

    • 5
  2. Nicolas Modrzyk
    2014-10-22T16:55:08+08:002014-10-22T16:55:08+08:00

    我正在使用以下docker 图像并取得了很好的成功。

    让它运行:

     docker pull wnameless/oracle-xe-11g
    

    和

     docker run -d -p 49160:22 -p 49161:1521 wnameless/oracle-xe-11g
    
    • 3
  3. Best Answer
    Sath89
    2015-04-08T03:03:25+08:002015-04-08T03:03:25+08:00

    这是我的叉子:

    • 将图像大小从 3.8G 减少到 825MB
    • 数据库初始化移出映像构建阶段
    • 现在数据库在容器启动时初始化,没有安装数据库文件
    • 容器外的媒体重用支持
    • 在容器停止时添加了正常关闭
    • 删除了 sshd

    您可以在这里查看:
    https ://registry.hub.docker.com/u/sath89/oracle-xe-11g/
    https://github.com/MaksymBilenko/docker-oracle-xe-11g

    • 3
  4. kohlerm
    2013-12-08T02:31:40+08:002013-12-08T02:31:40+08:00

    我可以确认 Oracle XE 在 Docker 中工作。唯一的问题是容器内部的 shm 配置为仅 65356k,请参见 https://github.com/dotcloud/docker/issues/2606 到目前为止唯一的解决方法是更改​​ lxc 模板并重新编译 docker(这很容易)

    • 2
  5. Remo
    2015-06-10T12:25:36+08:002015-06-10T12:25:36+08:00

    这绝对是一种可行的方法。我们将 Ubuntu 14.04 用于我们的主机,并在 Docker 容器中运行多个 Oracle 11g 实例以用于开发目的。

    目前(Docker 1.5)对于 11g 和 12c 的主要问题是 Docker 的硬编码共享内存限制问题 #2606。目前有两种解决方法:

    1. 在启动实例之前使用docker run --privileged ...并重新挂载 /dev/shm 并使用更多内存
    2. 自己修改和重建 Docker。对于这种情况,我为 12c 整理了一个 Dockerfile,它允许一次性创建一个图像:https ://github.com/arpagaus/docker-oracle-12c
    • 1
  6. gstanden
    2015-03-06T07:27:00+08:002015-03-06T07:27:00+08:00

    您可以在 Ubuntu 14.04 上使用 OEL 6.5 LXC Linux 容器,如我博客中的分步所述:

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

    • 0

相关问题

  • 无法通过 Ubuntu VPN 访问外部网络

  • ubuntu apt-get upgrade - 如何在 shell 中单击确定?

  • VirtualBox 上 Ubuntu 的访客优化技巧 [关闭]

  • 外部硬盘上的 virtualbox 虚拟硬盘驱动器(Vista 主机上的 ubuntu 客户机)

  • 如何在 Ubuntu 上挂载 LVM 分区?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve