威联通ContainerStation部署Oracle11g

前言

ContainerStation本质上是对Docker可视化的一款软件,所以使用起来并不像直接敲docker指令那么灵活,而且软件自身也存在一些bug(比如进入容器使用vi指令编辑文件时,想按esc退出编辑模式,但是该输入却被当做失去焦点事件处理,导致编辑好的文件永远无法保存)。笔者通过这次部署Oracle11g,彻底弄清楚了ContainerStation和Docker之间的对应关系,从而能够随心所欲地部署任意软件。

网上关于Docker部署Oracle11g的文章很多,但受限于NAS平台,没法直接套用网上教程,需对教程理解之后再进行部署,这也是笔者写本文的原因。

部署过程详解

使用docker-compose文件创建容器

version: '3.1'

services:
  oracle:
    image: registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
    container_name: oracle
    restart: always
    privileged: true
    environment:
      - TZ=Asia/Shanghai
      - ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
      - ORACLE_SID=helowin
    ports:
      - 1521:1521

注意:第一次创建时不能挂载数据卷,否则数据库无法启动!因为oracle启动后会创建数据库文件、日志文件、ctl控制文件等。如果直接挂载目录,目录为空,这些文件就不会创建,导致无法启动!所以千万不要画蛇添足地先把数据卷给挂载了!

临时开启NAS的SSH远程访问

笔者的NAS是威联通TS-564,系统版本为QTS5.0.1.2248,开启SSH的方法为:控制台——>网络和文件服务——>Telnet/SSH——>勾选允许SSH连接——>应用。

通过SSH客户端远程连接NAS

SSH客户端很多,笔者常用的是MobaXterm。需要强调一点,笔者是在局域网内通过SSH操作的NAS(不建议外网操作,因为外网操作需要暴露SSH连接所需的22号端口至公网,很容易被网上渗透攻击)。

在MobaXterm中输入NAS的ip,管理员账户的用户名和密码就能成功连接NAS了。

进入容器创建用户

docker exec -it oracle bash
cd /home/oracle/
source .bash_profile 
sqlplus /nolog

SQL> conn /as sysdba
SQL> alter user system identified by system;
SQL> alter user sys identified by system;
SQL> create user bruce identified by yca1cahk; 
SQL> grant connect,resource,dba to mike;
SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
SQL> alter system set processes=2000 scope=spfile;

对于上述指令,我们进入容器后连接了数据库,创建了一个bruce用户并赋权,同时修改了system和sys用户的密码。到此时,我们已经可以通过Navicat等工具连接数据库了。注意SID是helowin

拷贝容器中的数据库相关文件至宿主机

笔者在NAS的/share目录下创建了一个Software文件夹,所有需要挂载数据卷的容器都使用该文件夹下的对应目录。针对oracle容器,我创建的目录信息为:/share/Software/oracle/oradata/helowin/

在SSH中执行拷贝操作(不需要进入容器):

docker cp oracle:/home/oracle/app/oracle/oradata/helowin/ /share/Software/oracle/oradata/helowin/
cd /share/Software/oracle/oradata
chown -R 500.500 helowin/ #把helowin目录所有者赋予 500,因为500是容器内oracle组合用户的 id

在ContainerStation中修改docker-compose文件

还记得上文说过,docker-compose文件中不要挂载数据卷了吧?现在已做好准备工作,可以挂载了。修改文件前,记得先把oracle容器给停了。文件内容修改如下:

version: '3.1'

services:
  oracle:
    image: registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
    container_name: oracle
    restart: always
    privileged: true
    environment:
      - TZ=Asia/Shanghai
      - ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
      - ORACLE_SID=helowin
    ports:
      - 1521:1521
    volumes:
      - /share/Software/oracle/oradata/helowin/:/home/oracle/app/oracle/oradata/helowin/

修改之后启动容器,此时便已完成了Oracle11g的部署,同时将数据文件挂载到了宿主机上。

注意:为了安全,部署完成后可以禁用SSH的连接了!

总结

如果全程通过命令行按照Docker下部署Oracle的方式去操作是很容易的,但笔者担心这种方式创建的容器ContainerStation中无法正确加载(讲道理应该是可以加载的,没试过)。本文介绍了通过命令行和GUI操作相结合的方式来完成数据库的部署,稍微麻烦了点,但懂得原理的话应该没什么操作难度。

我猜ContainerStation设计的初衷就是想让不懂Docker的人能快速部署容器,所以操作起来很受限。尤其对于Oracle这种专用软件,ContainerStation提供的操作已经不够用了,必须得自己敲命令行才能搞定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值