事前准备
篇幅受限制,关于持久化数据的方法请参见我的另一边文章
docker搭建oracle服务持久化数据
1. oracle下载
版本:11.2.0.1,这个版本可以免费下载,11.2.0.4需要付费帐号才行
下载需要登陆Oracle账号,会有授权参数共2个zip包,下载速度很慢,推荐迅雷下载,但是我这里迅雷下第一个zip包很快,第二个非常慢,尝试了腾讯云下载,竟然比迅雷还慢,最后用的阿里云服务器,我这里很快,如果还有免费试用资格的可以试下.
下载地址:
https://www.oracle.com/database/technologies/oracle-database-software-downloads.html#11g
2. 从Jaspeen大神的github,下载/准备相关内容
1)Dockerfile
https://github.com/jaspeen/oracle-11g/blob/master/Dockerfile
# 基于cnetos:7制作镜像,可以根据自己的需求来选择不同的镜像我这里用的centos:centos7
FROM centos:7
# 作者名:
MAINTAINER shuu
# ADD在Dockerfile进行build时,会将assets目录,复制到容器根目录.
ADD assets /assets
# 修改目录权限
RUN chmod -R 755 /assets
# 执行setup.sh脚本,进行安装前的准备工作
RUN /assets/setup.sh
# 暴露1521和8080端口
EXPOSE 1521
EXPOSE 8080
# 当容器被启动时,会执行entrypoint.sh脚本,进行oracle的安装
CMD ["/assets/entrypoint.sh"]
2)assets目录
此目录中包含了很多脚本,及oracle安装时需要用到的配置文件.
https://github.com/jaspeen/oracle-11g
3)将上述的文件放到同一个目录中
3. assets文件分析
jaspeen是基于oracle11.2.0.4进行的配置,所以如果你下载的压缩包也是相同版本,并且对配置相关信息没有兴趣研究,可以选择略过。
1)colorecho
#!/usr/bin/env bash
ccred='\033[0;31m'
ccyellow='\033[0;33m'
ccgreen='\033[32m'
ccend='\033[0m'
echo_red() {
echo -e "${ccred}$@${ccend}"
}
echo_yellow() {
echo -e "${ccyellow}$@${ccend}"
}
echo_green() {
echo -e "${ccgreen}$@${ccend}"
}
定义了三个函数,分别用来将echo
输出的字体显示为红,黄,绿色
2)setup.sh
# 如果脚本文件中的命令执行后结果状态码不是0,则立即退出脚本.
set -e
# 引入 1)解释过的文件,为了能够使用自定义的带颜色的echo
source /assets/colorecho
# trap的作用:
# 当捕捉到GIGTERM/SIGINT信号时,分别执行对应的命令.
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 () {
echo "Installing dependencies"
yum -y install binutils compat-libstdc++-33 compat-libstdc++-33.i686 ksh elfutils-libelf \
elfutils-libelf-devel glibc glibc-common glibc-devel gcc gcc-c++ libaio libaio.i686 \
libaio-devel libaio-devel.i686 libgcc libstdc++ libstdc++.i686 libstdc++-devel \
libstdc++-devel.i686 make sysstat unixODBC unixODBC-devel
yum clean all
rm -rf /var/lib/{
cache,log} /var/log/lastlog
}
users () {
echo "Configuring users"
# 创建oinstall及dba组,组ID分别为200和201
groupadd -g 200 oinstall
groupadd -g 201 dba
# 创建oracle用户并指定其:
# 用户id为 400
# 初始组为 oinstall
# 附加组为 dba
# 家目录为 /opt/oracle
useradd -u 440 -g oinstall -G dba -d /opt/oracle oracle
# 为oracle及root用户赋予密码,均为install,这里可以自行修改
echo "oracle:install" | chpasswd
echo "root:install" | chpasswd
# 将 /etc/pam.d/login文件中的内容:pam_namespace.so 替换为:下面2行信息(具体看一眼就明白了)
# pam_namespace.so
# session required pam_limits.so
# pam_limits.so模块的主要功能是限制用户会话过程中对各种系统资源的使用情况。
# 缺省情况下该模块的配置文件是/etc/security/limits.conf