@网络老鼠技术小屋

网络老鼠技术小屋-涂飞平的博客空间

Docker使用Oracle XE 11g

3 年前 0

由于开发都在VirtualBox虚拟机中,Oracle数据库仅仅处于够用的状态,测试,开发阶段的数据操作也比较小。周五系统演示,服务器也部署在虚拟机中,碰到实际数据,比较大,导入过程超出预期,需要实际测试Oracle和系统结合在物理机器的效率。
开发实体机中不希望安装Oracle,然后启动一堆的服务。不环保
这个时候想到使用Docker了,把Oracle安装到Docker里面,将所有的Oracle服务和环境都隔离开,不需要的时候,停止Docker容器,也可以彻底删除相应的镜像以释放占用的硬盘。很方便,不会遗留各种文件和依赖,这正是Docker擅长的领域。
由于之前安装过Docker,然后系统被我各种折腾,现在Docker已经启动不了,先删除,再重新安装,过程比较简单:
sudo apt-get purge docker.io
sudo brctl delbr docker0 #删除Docker的网桥
重新安装docker
apt-get install docker.io
但在启动后,发现报错,上网搜索发现处理方法,但目前没有深究为何出现这个问题(之前安装后启动没有发现类似问题),先做一个启动docker的脚本:
sudo chmod 6 /sys/module/apparmor/parameters/enabled
sudo echo N>/sys/module/apparmor/parameters/enabled
sudo chmod 4 /sys/module/apparmor/parameters/enabled
sudo service docker.io start
启动后,从Docker Hub下载其他人已经做好的Oracle Docker镜像。
sudo docker pull alexeiled/docker-oracle-xe-11g
Docker Hub中oracle xe 11g的镜像还真不少,因为这个镜像的下载量比较大,所以我选择它。
下载是个漫长的过程,话说,用友的网络还是不错的,下载速度嗖嗖滴!
DeepinScreenshot20150111112028.png
启动Docker-Oracle-XE并将需要的服务端口映射出来后,使用SSH登录后,建用户,授权,恢复数据库,然后,就可以从VirtualBox中连接实体机器的Oracle了,对于开发,测试,都可以提高效率!
sudo docker run -d -p 2022:22 -p 1521:1521 -p 8080:8080 --name oracle alexeiled/docker-oracle-xe-11g

下面是Dockerfile文件,列出来,并附有简单解析
FROM wnameless/xe-temp

MAINTAINER Alexei Ledenev #将部分配置文件加入到新生成的image中
ADD chkconfig /sbin/chkconfig
ADD init.ora /
ADD initXETemp.ora /

RUN apt-get install -y libaio1 net-tools bc
RUN ln -s /usr/bin/awk /bin/awk
RUN mkdir /var/lock/subsys
RUN chmod 755 /sbin/chkconfig
RUN ln -s /proc/mounts /etc/mtab

#安装orcale xe 11g
RUN dpkg --install /tmp/oracle-xe_11.2.0-1.0_amd64.deb

RUN mv /init.ora /u01/app/oracle/product/11.2.0/xe/config/scripts
RUN mv /initXETemp.ora /u01/app/oracle/product/11.2.0/xe/config/scripts

RUN printf 8080\\n1521\\noracle\\noracle\\ny\\n | /etc/init.d/oracle-xe configure

RUN echo 'export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe' >> /etc/bash.bashrc
RUN echo 'export PATH=$ORACLE_HOME/bin:$PATH' >> /etc/bash.bashrc
RUN echo 'export ORACLE_SID=XE' >> /etc/bash.bashrc

#对外开放SSH,oracle服务端口,8080是http常用端口,也开放?
EXPOSE 22
EXPOSE 1521
EXPOSE 8080

#启动oracle服务和SSH服务,这样可以登录容器,做oracle管理
CMD sed -i -E "s/HOST = [^)]+/HOST = $HOSTNAME/g" /u01/app/oracle/product/11.2.0/xe/network/admin/listener.ora; \
service oracle-xe start; \
/usr/sbin/sshd -D

容器和Oracle的账户信息
oracle:sid:xe
system/oracle
操作系统:root/admin

编写评论