Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。它们简化了从头到尾的流程并极大的简化了部署工作。Dockerfile从FROM命令开始,紧接着跟随者各种方法,命令和参数。其产出为一个新的可以用于创建容器的镜像。水族趣闻
▲作用
▪ 对于开发人员:可以为开发团队提供一个完全一致的开发环境。
▪ 对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了。
▪ 对于运维人员:在部署时,可以实现应用的无缝移植。
▲组成
▲构建镜像
创建完一个Dockerfile文件之后并在其当前目录下运行docker build -t new_image_name:tag .命令生成一个新的镜像。
本次我们仅将中间件部分转移到docker中,数据库依旧是用原来虚拟机上的数据库,所以我们的Dockerfile主要任务有:
▪ 配置中间件运行环境(依赖包及环境变量)
▪ 配置oracle即时客户端,用于连接原虚拟机的数据库
▪ 其他一些杂项配置等
Dockerfile
镜像制作
新建/qx/centos_ssh文件夹,将Dockerfile拷贝到目录下,并新建source文件夹,文件夹中存放如下资料
上面basic-10.2.0.5.0-linux.zip、sqlplus-10.2.0.5.0-linux.zip为oracle即时客户端,profile中是环境变量,tnsnames.ora是我们需要连接的tns配置,可以直接从待迁移机器上拷过来即可。
切换到/qx/centos_ssh目录下,执行
等待镜像构建完成,可能需要一会儿。完成之后,执行
查看镜像列表
Dockerfile构建容器
Dockerfile中我们说过,创建挂载点,注意在run时需用-v实际指定具体的宿主机目录。我们先将hundsun下的三个目录,包括appcom,linux.i386,workspace拷贝到宿主机器上,例如
然后我们创建容器时就将/home/hundsun/uf_114下的三个目录分别挂载到我们容器中的/home/hundsun/下的三个目录中
除此之外,我们还需要根据需要映射端口,如22,9002,9004等。最终,我们的命令如下
由于我们Dockerfile中最后有一条启动ssh的cmd,所以这里我们不用docker run -it xxx /bin/bash,而是用-d后台运行,因为如果有docker run -it xxx /bin/bash,就会覆盖Dockerfile中的最后一条cmd命令,导致ssh不能正常启动。
上面执行成功后,我们通过
进入容器,后面就是与原来虚拟机操作一样的。由于上面我们上面映射了2225端口到22端口上,所以我们可以直接通过宿主机ip:2225连接到容器中,可通过xshell,xftp等工具直接连接。
还有9002和9004端口,也可以通过hsadmin,客户端等直接连接宿主机,即可连接到容器内。而我们挂载的三个文件夹,则可以直接连接宿主机进行升级操作,会同步更新到容器内。
上面主要是完成了中间件环境Dockerfile的编写及构建,数据库依旧采用的是虚拟机管理,那么接下来我们写一个安装oracle的Dockerfile,由于有了上面的基础,这里就大概的介绍一下流程。
手工安装oracle是一个非常麻烦的事情,需要改一堆配置,需要尝试的可以看看linux社区的Docker中安装Oracle 11.2.0.4这篇文章。在github上找到了一个写好的,但是有点问题,我们就基于此来修改并新增一些个性化的功能,fork了一个到这儿。
然后我们将上面所需要的文件都放到docker宿主机上,如下:
先看下Dockerfile
其实主要的步骤是:
1./assets/setup.sh脚本中主要是安装oracle所需依赖、oracle用户组、以及修改一些系统文件以满足oracle安装检查,新增了安装ssh服务。
2.切换目录到/qx/oracle_image/下,通过,构建一个名为oracle的镜像。
3.构建完镜像,Dockerfile的任务已经完成,接着创建并启动容器。
4.
5./assets/entrypoint.sh是在创建容器时执行的,里面主要安装oracle,通过调用/assets/install.sh安装。
6.安装完或者已经安装(比如第二次启动时),继续执行/assets/entrypoint_oracle.sh脚本。
7./assets/entrypoint_oracle.sh这个脚本主要时建库以及启动数据库。
8.至此,数据库已经安装完毕,建库完毕,启动完毕。
9.linux用户名:root/install 密码:oracle/install。
10.数据库SERVICE_NAME = ORCL,sys密码oracle。
扩展阅读