【Docker】Oracle容器化部署,看这一篇就够了! |
您所在的位置:网站首页 › docker离线部署oracle › 【Docker】Oracle容器化部署,看这一篇就够了! |
写在前
由于本机mac空间不够(哈哈,促进我学习),所以想搭建一个云Oracle环境。 之前写过windows搭建的,但是之前11g(项目要求)一直安装不上,索性就把服务器换成linux,准备改用docker的方式来进行搭建。 总体步骤 阿里云申请 linux 服务器,这里我的是 CentOS 7.4 。安装 docker 。下载 Oracle 镜像并安装。导入数据(通过DMP导入,需创建表空间,用户等)。 Docker简介Docker简单来说,就是一个虚拟机,你要什么应用,就直接输入命令安装,不用就直接删掉,沙盒傻瓜式。官方logo就是鲸鱼上面载着货物,这里我主要是用来安装 Oracle,mysql,tomcat什么的。logo如下图: 废话不多说,就让我们开始吧。 一,安装docker对于 linux 服务器来说,安装docker非常简单,不过需要 CentOS 内核版本高于 3.10,使用uname -r 来查看。如下图: 具体的安装步骤,可以参考这篇博文 https://blog.csdn.net/qq_36892341/article/details/73918672,写得很清楚,就不再赘述,如有不懂,可以留言。 二,下载Oracle镜像并安装使用docker search oracle 来搜索 oracle 的版本,我这里选用的是 registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g ,这是阿里云的一个 oracle 11g 版本,需要其他版本的小伙伴可以自行选择。 使用如下命令来进行镜像的拉取 docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g拉取完后,可以使用 docker images 来查看已有镜像 可以看到,REPOSITORY 就是镜像名称,TAG 是版本号,IMAGE ID 是镜像的编号,后面的见名知意了。 启动 Oracle 服务,使用如下命令即可,-p 将容器的 8080 端口映射到主机的 8080 端口(-p 主机端口:容器端口) docker run --name registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g -p 1521:1521之后使用 docker ps 来看启动中的容器。 这里可以看到,oracle 服务已经启动(即 ff94a17f84a7) 三,导入数据、用户及表空间创建3.1,导入 dmp 数据文件 首先,需要从本机拷贝 dmp(从其他库导出的数据文件,包含数据 + 表结构等) 数据到 Oracle 容器中 格式:docker cp /本地文件地址 容器ID:/容器文件存储地址,如下: docker cp /home/oracle/data_20181104.dmp ff94a17f84a7:/home/cloudera【注:容器ID(这里我的是ff94a17f84a7)请换成自己的】 3.2,创建表空间及用户 使用如下命令进入 docker 容器内 docker exec -it ff94a17f84a7 bash使用数据库管理员方式进行登录 这里我使用 sqlplus,提示 command not found ,不用担心,使用 su - oracle 切换下用户到 oracle 用户 ,然后 sqlplus,之后 sys/sys as sysdba 进行登录,如下图,登录成功! 进行表空间的创建: 这里分为四小步: 1,创建临时表空间: create temporary tablespace TEST_DBF_TEMP tempfile '/home/oracle/data/TEST_DBF_TEMP.dbf' size 50m autoextend on next 50m maxsize 2048m;2,创建正式表空间: create tablespace TEST_DBF datafile '/home/oracle/data/TEST_DBF.dbf' size 50M autoextend on next 50m maxsize 2048m;3,创建用户并且指定表空间: create user TEST identified by "123" default tablespace TEST_DBF temporary tablespace TEST_DBF_TEMP;4,用户授权: grant create session,connect,resource,dba to TEST;3.3,导入 dmp 文件: imp TEST/123 file = /data_20181210.dmp full=y;静静等待导入完成即可。 PS:阿里云记得去云服务器控制台开放数据库对应的端口即可外网连接。 配置规则 选择克隆一个,输入 docker ps 中 oracle 对应的主机端口即可: 配上成功图: Bingo! 常见问题(不定时更新): Oracle服务无法连接&挂掉重启今天起来准备工作,Oracle无法连接了,可能原因: 连接时使用的sid不正确,进入容器,连接后使用 SELECT name FROM v$database; 查看SID。dokcer容器中 Oracle 挂了。其他未知原因(如电脑没有连网,磁盘空间满了,用户名密码错误等)。马上进服务器去docker ps 查询在线容器,但是发现Oracle还在。 于是,docker exec -it ff94a17f84a7 bash 进入到容器 。 lsnrctl start启动监听程序,如下图,提示已经启动了。 sqlplus /nolog进入,conn / as sysdba管理员连接,然后startup ,如下图,提示启动成功,数据库打开。 Bingo! 重启容器后,端口变更,设置固定端口1. 查看需要修改的容器,记住 container id docker ps -a 2. 停止容器 docker stop xxx 3. 修改容器的端口映射配置文件 vim /var/lib/docker/containers/{container_id}/hostconfig.json "PortBindings": { "80/tcp": [ { "HostIp": "", "HostPort": "8080"//宿主机ip } ] },4.重启docker服务 service docker restart 5.启动容器 docker start xxx Error response from daemon: Cannot XX container这个错误还真的是奇葩,我放个元旦回来,就什么都操作不了了? 重启 docker 服务 systemctl restart docker重启容器成功 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |