docker容器安装oracle10g
由于工作需要,嘗試了將oracle10g安裝到docker容器當(dāng)中,中間也是踩了很多坑
宿主機(jī):ubuntu 16.04
docker版本:Server Version: 1.12.1
oracle 10g : 10201_database_linux_x86_64.cpio
基礎(chǔ)鏡像:centos:6.6
1、利用dockerfile先將需要做的前提工作打成鏡像
===============??? dockerfile =============
FROM centos:6.6
USER root
COPY assets /assets
RUN chmod -R 755 /assets && /assets/setup.sh
USER oracle
WORKDIR /home/oracle
ENV PATH=$PATH:$HOME/.local/bin:$HOME/bin:/home/oracle/.local/bin:/home/oracle/bin:/home/oracle/bin:/u01/app/oracle/product/10.2.0/db_1/bin? ORACLE_BASE=/u01/app/oracle ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 ORACLE_SID=ora10g LD_LIBRARY_PATH=/u01/app/oracle/product/10.2.0/db_1/lib:/lib:/usr/lib
RUN cpio -idmv < 10201_database_linux_x86_64.cpio
EXPOSE 1521
EXPOSE 8080
============? setup.sh ====================
set -e
source /assets/colorecho
trap "echo_red '******* ERROR: Something went wrong.'; exit 1" SIGTERM
trap "echo_red '******* Caught SIGINT signal. Stopping...'; exit 2" SIGINT
#Install prerequisites directly without virtual package
deps () {
??????? yum -y install binutils compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel make sysstat libXp libXt.i686 libXtst.i686
}
# useradd new users for oracle install
users () {
??????? echo "Configuring users"
??????? groupadd -g 1000 oinstall
??????? groupadd -g 1001 dba
??????? useradd -u 1000 -g oinstall -G dba oracle
??????? echo "oracle:oracle" | chpasswd
??????? echo "root:root@123" | chpasswd
}
#makeup new folder for oracle data
folder(){
??????? echo "mkdir new folder for oracle data"
??????? mkdir -p /u01/app/oracle
??????? mkdir -p /u01/app/oracle/product/10.2.0/db_1
??????? mkdir -p /u01/app/oracle/admin/ora10g/{a,b,c,d,u}dump
??????? mkdir -p /u01/app/oracle/oradata/ora10g
??????? mkdir -p /u01/app/oracle/flash_recovery_area
}
# cp the release file
cp_file(){
??????? echo "cp the release file"
? cp /assets/10201_database_linux_x86_64.cpio /home/oracle
??????? cat /assets/profile > home/oracle/.bash_profile
? cp /assets/install.sh /home/oracle
??????? cp /assets/oraInst.loc /etc/
??????? cp /assets/enterprise.rsp /home/oracle/
??????? cp /assets/sysctl.conf /etc/sysctl.conf
? #cat /assets/limits.conf >> /etc/security/limits.conf
}
#replace the owner
ower(){
??????? echo "replace the owner"
??????? chown -R oracle:oinstall /u01
??????? chown -R oracle:oinstall /home/oracle
??????? chown oracle:oinstall /etc/oraInst.loc
??????? chmod 664 /etc/oraInst.loc
??????? chmod 777 /tmp
}
deps
users
folder
cp_file
ower
2、將上面的dockerfile打成一個基礎(chǔ)鏡像,簡稱為a-images
3、docker run -ti --privileged? a-images bash? 運(yùn)行容器
4、在容器當(dāng)中手動安裝oracle ,利用腳本進(jìn)行靜默安裝
???? /home/oracle/database/runInstaller -silent -ignoreSysPrereqs -waitforcompletion? -responseFile /home/oracle/enterprise.rsp
5、將安裝有oracle的a-images的容器? ,通過docker commit -p 生成一個新的鏡像,這個新的鏡像就是包含完成oracle的鏡像。
總結(jié)
以上是生活随笔為你收集整理的docker容器安装oracle10g的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 常看
- 下一篇: xCat 批量安装系统