威联通ContainerStation部署Oracle11g

news2024/11/28 16:40:19

文章目录

  • 前言
  • 部署过程详解
    • 使用docker-compose文件创建容器
    • 临时开启NAS的SSH远程访问
    • 通过SSH客户端远程连接NAS
    • 进入容器创建用户
    • 拷贝容器中的数据库相关文件至宿主机
    • 在ContainerStation中修改docker-compose文件
  • 总结

前言

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提供的操作已经不够用了,必须得自己敲命令行才能搞定。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/335637.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

聊聊分布式锁——Redis和Redisson的方式

一、什么是分布式锁 分布式~~锁,要这么念,首先得是『分布式』,然后才是『锁』 分布式:这里的分布式指的是分布式系统,涉及到好多技术和理论,包括CAP 理论、分布式存储、分布式事务、分布式锁... 分布式系统…

Android开发

前言:因为这学期选了手机APP开发这门课,所以还是写个博客记录一下学习过程,包括安卓开发和ios开发。用到的资料包括课程PPT,和我在网上找的一些视频和资料。 1.Andriod入门 XML:描绘应用界面 (决定APP长什…

NeurIPS/ICLR/ICML AI三大会国内高校和企业近年中稿量完整统计

点击文末公众号卡片,找对地方,轻松参会。 近日,有群友转发了一张网图,统计了近年来中国所有单位在NeurIPS、ICLR、ICML论文情况。原图如下: 中稿数100: 清华(1) 北大(2) 占比:22.6%。 累计数…

基于注解管理Bean

一、介绍从 Java 5 开始,Java 增加了对注解(Annotation)的支持,它是代码中的一种特殊标记,可以在编译、类加载和运行时被读取,执行相应的处理。开发人员可以通过注解在不改变原有代码和逻辑的情况下&#x…

全板电镀与图形电镀,到底有什么区别?

衔接上文,继续为朋友们分享普通单双面板的生产工艺流程。 如图,第四道主流程为电镀。 电镀的目的为: 适当地加厚孔内与板面的铜厚,使孔金属化,从而实现层间互连。 至于其子流程,可以说是非常简单&#x…

黑马】后台管理176-183

一、新建订单管理的分支二、创建一个订单管理的vue文件进行组件页面的路由配置import Order from ../components/order/Order.vue{path:/orders,component:Order},注意上面的components不要忘记少加一个s!三,获取后台数据面包屑导航粘贴过来文本输入框&a…

手写MySQL补充章(十二)SQL语法解析之语法树

目录 模块分析 AST节点类型 SQL词法解析 举个例子 之前写的在第九章写的sql解析太简单了,SQL规范还有复杂的开闭括号以及嵌套查询,复杂SQL几乎不可能通过字符串匹配来实现。 本章以Druid SQL Parser解析SQL为例,进行分析。 模块分析 D…

如何做好需求管理?经验方法、模型、工具

需求管理能力是衡量产品经理能力的一个重要指标。因为需求是产品的基石,只有选取恰当的方法进行需求分析及管理,才能更好的构建产品方案,从而输出精准的产品定义。结合本人学习和自身经验,打算将需求管理分”需求挖掘”、”需求分…

102.第十九章 MySQL数据库 -- MySQL的备份和恢复(十二)

5.备份和恢复 5.1 备份恢复概述 5.1.1 为什么要备份 灾难恢复:硬件故障、软件故障、自然灾害、黑客攻击、误操作测试等数据丢失场景 参考链接: https://www.toutiao.com/a6939518201961251359/ 5.1.2 备份类型 完全备份,部分备份 完全备份:整个数据集 部分备份:只备份数…

shell的环境变量

一、什么是环境变量 环境变量由系统提前创建的,不仅在Shell编程方面,而且在Linux系统管理方面,都起着非常重要的作用。 打个比方,我们平时所用的编程语言如c语言,我们都会碰到变量的作用域的问题。比如在函数中 定义的…

新的一年软件测试行业的趋势能够更好?

如果说,2022年对于全世界来说,都是一场极大的挑战的话;那么,2023年绝对是机遇多多的一年。众所周知,随着疫情在全球范围内逐步得到控制,无论是国际还是国内的环境,都会呈现逐步回升的趋势&#…

【Redis高级-集群分片】

单机安装Redis首先需要安装Redis所需要的依赖:yum install -y gcc tclRedis安装包上传到虚拟机的任意目录:我放到了/tmp目录:解压缩:tar -zxvf /tmp/redis-6.2.4.tar.gz -C /tmp解压后:进入redis目录:cd /t…

剑指 Offer 41. 数据流中的中位数

题目 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。 例如,[2,3,4] 的中位数是…

从零开始的python基础教程(2)

九、Python Standard Library 1、Paths from pathlib import Path# Windows Path("C:\\Program Files\\Microsoft") # Or Path(r"C:\Program Files\Microsoft")# Mac Path("/usr/local/bin")Path() # Current Path("ecommerce/__init__.py…

AXI实战(一)-为AXI总线搭建简单的仿真测试环境

AXI实战(一)-搭建简单仿真环境 看完在本文后,你将可能拥有: 一个可以仿真AXI/AXI_Lite总线的完美主端(Master)或从端(Slave)一个使用SystemVerilog仿真模块的船信体验小何的AXI实战系列开更了,以下是初定的大纲安排: 欢迎感兴趣的朋友关注并支持,以下为正文部分 文章目录…

node.js笔记-模块化(commonJS规范),包与npm(Node Package Manager)

目录 模块化 node.js中模块的分类 模块的加载方式 模块作用域 向外共享模块作用域中的成员 向外共享成员 包与npm(Node package Manager) 什么是包? 包的来源 为什么需要包? 查找和下载包 npm下载和卸载包命令 配置np…

【数据结构】二叉排序树——平衡二叉树的调整

文章目录前置概念一、构造平衡二叉树的基本思想二、一个示例三、平衡二叉树的调整细节(1)LL型(顺时针 )举例(2)RR型(逆时针)(3)LR型(先逆时针再顺…

测试左移之需求质量

测试左移的由来 缺陷的修复成本逐步升高 下面是质量领域司空见惯的一张图,看图说话,容易得出:大部分缺陷都是早期引入的,同时大部分缺陷都是中晚期发现的,而缺陷发现的越晚,其修复成本就越高。因此&#…

【Vue3 组件封装】vue3 轮播图组件封装

文章目录轮播图功能-获取数据轮播图-通用轮播图组件轮播图-数据渲染轮播图-逻辑封装轮播图功能-获取数据 目标: 基于pinia获取轮播图数据 核心代码: (1)在types/data.d.ts文件中定义轮播图数据的类型声明 // 所有接口的通用类型 export typ…

linux(centos7.6)docker

官方文档:https://docs.docker.com/engine/install/centos/1安装之前删除旧版本的docker2安装yum install-y yum-utils3配置yum源 不用官网的外国下载太慢 推荐阿里云yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.r…