Ubuntu
Docker 可以幫我在 Ubuntu 上安裝 Oracle 11g 數據庫嗎?
我們正在努力解決一個常見問題,即嘗試為我們的開發人員提供一個 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
您可以在這裡查看:
如果 Oracle Express 適合您:
- 下載 Oracle XE 11g rpm。
- 使用外星人將 rpm 轉換為 deb。
- 使用 dpkg-deb 命令“提取” deb 包。
- 修改 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.
- 使用 deb 命令建構 deb 包。
現在您有了一個 Oracle XE 11g 的 deb 包。安裝它!
但是還有一個問題:/dev/shm。在這裡如何解決它:
- 註釋 /etc/init/mounted-dev.conf 中的行:$$ -e /dev/shm $$|| ln -s /run/shm /dev/shm.
- 在 /etc/fstab 中添加一行: shm /dev/shm tmpfs size=2g 0 0
- rm -f /dev/shm;mkdir /dev/shm;安裝 shm
啟動Oracle XE:service oracle-xe configure