在《Docker技术入门与实践》这本书中描述了如何在联网环境下一步步制作一个WebLogic的基础镜像,但是那十几页的描述看起来还是让人非常头大,而且在很多传统企业或者金融企业中,他们的内网环境是无法连接外网的,这就要求我们必须有一种离线环境下制作WebLogic的方法。而本文恰好是主要描述如何在离线状态基于纯净的Centos7.2的容器镜像来一步步制作一个WebLogic的容器镜像。
要完成WebLogic基础镜像的制作,我们要准备如下材料:
一:centos7的容器镜像。这个是我是在联网环境下利用 docker pull centsos 命令下载完成之后,利用docker save -o centos-7.2.tar centos:latest命令保存下来的。
二:Jdk的rpm包。这个可以在联网环境下从Oracle的官网上下载得到。
三:WebLogic的Zip版安装包。这个也可以在Oracle官网上下载得到。
准备好这些材料之后,我们就可以进入到下一步操作了:
首先,我们利用U盘或者其他介质将我们准备的这三个软件包拷贝到我们用来制作镜像的主机上;假设我们把jdk和WebLogic的安装包拷贝到了/usr/software目录下,并把WebLogic解压【unzip wls1212_dev.zip】解压出来的顶层文件目录是wls12120。利用 docker load -i centos-7.2.tar 命令导入centos基础镜像。这时,当我们执行docker images的时候会发现我们的环境中增加了一个centos:latest版的镜像信息。这说明我们的基础镜像导入是成功的。
其次,我们利用docker run -itd -P -v /usr/software:/home centos:latest /bin/bash命令基于刚刚导入的centos镜像来启动一个后台运行的容器,这个容器中的/home目录和宿主机上的/usr/home目录下是共享的。利用docker exec -it 容器ID /bin/bash命令进入到容器中之后执行命令mkdir -p /opt/Oracle/weblogic/wls12120。
接下来安装jdk并修改环境变量:
rpm -ivh jdk-8u65-linux-x64.rpm
export JAVA_HOME=/usr/java....
export WM_HOME=/opt/Oracle/weblogic/wls12120。
在/opt/Oracle/weblogic/wls12120下运行sh configure.sh进行weblogic的安装。
需要等待一段时间;在出现是否创建一个新的domain时选择yes,回车
输入管理账号的用户名和密码。需要注意:密码必须同时包含字母数字,不能只包含数字或者只包含字母,否则此次安装会失败。
然后等待安装完成之后这时发现weblogic已经安装完成并启动。但是外界还不能访问。停掉weblogic后exit退出。
执行docker commit contianerId image:tag 将刚才制作的容器生成weblogic的基础镜像。
编写dockerfile,内容如下:
FROM weblogic:base
ADD run.sh /
EXPOSE 7001
CMD ["/run.sh"]
在当前路径下编写 vi run.sh 内容如下:
#!/bin/bash
#这个路径不能出错
/opt/Oracle/weblogic/wls12120/user_projestc/../startWebLogic.sh
在当前路径执行docker build -t weblogic:basic .进行镜像创建。
执行 docker run -itd -P weblogic:basic来测试。
执行docker ps 来查看刚才启动的容器对外暴漏的端口,:之前的是映射到宿主机的端口
在浏览器上输入http://ip:port/console来校验。这里的port是:之前的端口。
至此,我们已经完成了一个在离线环境下制作WebLogic基础镜像的整个步骤,总体的镜像制作方法是:基于以后容器提交成一个镜像、从归档文件导入,利用dockerfile来制作这三种方法的混合使用。这种方法在制作复杂基础镜像的时候会经常用到。