Ubuntu

Docker 可以幫我在 Ubuntu 上安裝 Oracle 11g 數據庫嗎?

  • June 9, 2015

我們正在努力解決一個常見問題,即嘗試為我們的開發人員提供一個 Oracle 11g 實例進行測試。我們的標準建構代理基於 Ubuntu 12.04,但 Oracle 僅支持基於 RedHat 的作業系統。

網上流傳著一些關於在 Ubuntu 上安裝 Oracle 的技巧,但它們似乎非常脆弱,而且很容易碰運氣。

我們希望避免僅僅為了支持 Oracle 而必須在 RedHat(/CentOS) 之上支持整個建構伺服器 Puppet 配置,所以我開始懷疑我們是否可以使用 Docker 來提供 Oracle 所需的類似 RedHat 的環境在我們的標準 Ubuntu 系統之上。這個想法是 Oracle 將在自己的容器中執行,但建構代理的其餘部分仍將在標準 Ubuntu 上執行,能夠通過 TCP 與 Oracle 通信。

我知道 LXC 是什麼以及它們與成熟的虛擬化(如 KVM/VirtualBox 等)之間的區別,但我想知道它是否仍然可行。

謝謝。

這是我的叉子:

  • 將圖像大小從 3.8G 減少到 825MB
  • 數據庫初始化移出映像建構階段
  • 現在數據庫在容器啟動時初始化,沒有安裝數據庫文件
  • 容器外的媒體重用支持
  • 在容器停止時添加了正常關閉
  • 刪除了 sshd

您可以在這裡查看:

https ://registry.hub.docker.com/u/sath89/oracle-xe-11g/

https://github.com/MaksymBilenko/docker-oracle-xe-11g

如果 Oracle Express 適合您:

  1. 下載 Oracle XE 11g rpm。
  2. 使用外星人將 rpm 轉換為 deb。
  3. 使用 dpkg-deb 命令“提取” deb 包。
  4. 修改 deb 腳本:
  • 改變$$ “$1” != “1” $$到$$ “$1” != “install” $$在 preinst 的開始。
  • 改變$$ “$1” = “1” -o -z “$2” $$到$$ “$1” = “configure” -a -z “$2” $$在 postint 的開頭。
  • 改變$$ “$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.
  1. 使用 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

引用自:https://serverfault.com/questions/538549