docker 安装 oracle

背景

在Linux中安装oracle非常麻烦,相信每个人也会遇到各种坑。为了一次装好,也方便将来直接可以导出镜像在各平台移植使用,所以选择用docker安装

OracleLinux

Oracle Linux,全称为Oracle Enterprise Linux,简称OEL,是Oracle公司在2006年初发布第一个版本,Linux发行版本之一,以对Oracle软件和硬件支持较好见长。

拉取镜像

在 DockerHub 上搜索 Oracle 可以找到 Oracle 的官方镜像,地址:https://hub.docker.com/
在这里插入图片描述

注意,这里使用 docker pull oraclelinux 命令,是拉取不到镜像的,因为它没有 latest 标签。因此,只能手动指定它的版本号
例如 docker pull oraclelinux
在这里插入图片描述
使用 官方镜像 下载速度非常慢,因此,我们可以使用阿里镜像 docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

在 dockerHub 上可以搜到 (第二个),可以参考这个配置
在这里插入图片描述在这里插入图片描述使用 docker images 查看镜像,确认已经下载完成
在这里插入图片描述

启动容器

  1. 默认启动容器的方式
    docker run -d -it -p 1521:1521 --name oracle11g --restart=always registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
  2. 持久化启动的方式
    docker run -d -it -p 1521:1521 --name oracle --restart=always --mount source=oracle_vol,target=/home/oracle/app/oracle/oradata registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

查看启动的线程 netstat -tulnp
在这里插入图片描述
查看运行状态 docker ps -a
在这里插入图片描述

容器内环境配置

进入容器 docker exec -it oracle11g bash
在这里插入图片描述
切换到 root 用户 su root,密码为 helowin
在这里插入图片描述
docker容器配置环境变量不是在 /etc/profile 中,容器启动不会走这个文件。
可以将环境变量的配置设置在 /home/oracle/.bashrc 文件下,这样可以省略掉软连接的创建 ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
在这里插入图片描述
编辑环境变量 vi /home/oracle/.bashrc,在文件最后加入以下命令

export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin:$PATH

wq 保存并退出。然后使用 source /home/oracle/.bashrc 刷新环境变量,并使之生效

进入 oracle 命令行

使用 sqlplus /nolog 进入oracle命令行
在这里插入图片描述
使用 “操作系统认证” 的方式,登录oracle conn / as sysdba
如果直接使用默认的 root 用户登录,会报登录失败。这里必须使用 su - oracle 命令,将当前用户切换到 oracle,然后在执行登录命令
在这里插入图片描述

ORA-12514, TNS:listener does not currently know of service requested in connect descriptor

在这里插入图片描述这个错误是由于数据库名用错了

su - oracle
sqlplus /nolog
conn / as sysdba
select instance_name from v$instance;
show user;

使用上述命令查出来的,就是所有可用的 “数据库名” 和 “用户名”
在这里插入图片描述

阿里的这个镜像,所有的密码都是统一的 helowin

system用户具有DBA权限,但是没有SYSDBA权限。平常一般用该帐号管理数据库。
而sys用户是Oracle数据库中权限最高的帐号,具有“SYSDBA”和“SYSOPER”权限,一般不允许从外部登录

在这里插入图片描述

配置防火墙

防火墙要允许 1521 端口,外部的数据库管理工具才能连的上

# 打开防火墙
systemctl start firewalld
# 查询端口状态
firewall-cmd --query-port=1521/tcp
# 永久性开放端口
firewall-cmd --permanent --zone=public --add-port=1521/tcp
# 重启防火墙
firewall-cmd --reload
firewall-cmd --query-port=1521/tcp

在这里插入图片描述

Docker可以用来创建轻量级的应用容器,但它并不直接支持在容器中安装Oracle数据库。因为Oracle是一个完整的服务器软件包,包含操作系统依赖、服务管理和庞大的数据文件,不适合直接在其上构建Docker镜像。 如果你想在Docker环境中运行Oracle数据库,通常的做法是: 1. **下载Oracle的Linux发行版**:Oracle提供了一些基于Linux的预配置虚拟机(如Oracle Linux),它们包含了所有必要的组件,包括数据库软件。从Oracle官网下载适合的版本。 2. **打包到Dockerfile**:编写一个Dockerfile,这个文件会指导如何从基础镜像开始,安装Oracle数据库,设置环境变量和配置文件等。 ```dockerfile FROM oraclelinux:7 # ... (安装所需的库,设置环境变量,下载安装包) RUN ... # ... (安装Oracle数据库) RUN ... # ... (启动数据库服务并配置监听) EXPOSE <port> ENTRYPOINT ["/bin/bash", "-c", "your-oracle-startup-script"] # ... (构建镜像) CMD ["./your-oracle-startup-script"] ``` 3. **构建Docker镜像**:使用`docker build -t your-image-name .`命令构建自定义的Docker镜像。 4. **运行容器**:通过`docker run -p host-port:container-port your-image-name`命令运行容器,并映射主机端口到容器端口。 5. **管理数据库**:使用Docker提供的网络连接访问容器内的数据库,比如`docker exec -it container_id sqlplus`。 **注意事项**: - 这个过程可能会涉及到大量的步骤和配置调整,尤其是当需要处理许可证和安全设置时。 - 如果你需要频繁地更新数据库,或者有高可用性和持久化存储的需求,可能还需要考虑使用更专业的数据库解决方案,比如Oracle Database Container for Kubernetes (DBaaS on Kubernetes) 或者将数据库部署在宿主机上而非容器内。
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值