1. 前言Docker 部署 Oracle 具有部署快、资源省、迁移易等优势尤其适用于开发测试、CI/CD 及个人学习等非核心生产场景。适用场景Linux 服务器部署 Oracle 数据库涵盖有网/无网两种环境。版本选择本文以 Oracle 19c 为例实际操作可替换为 18c、21c、23ai 等其他版本只需更换镜像标签即可。2. 环境准备Docker 安装2.1 标准安装步骤有网环境下直接执行以下命令安装 Docker# 安装 Docker sudo yum install -y docker # 启动 Docker 服务 sudo systemctl start docker # 设置开机自启 sudo systemctl enable docker # 验证安装 docker --version2.2 yum 仓库失效导致安装失败异常处理执行yum install时如遇到以下报错按步骤处理Errors during downloading metadata for repo xxx: Status code: 404 错误Failed to download metadata for repo xxx原因系统配置了已失效的第三方 yum 仓库YUM 更新元数据时遇到任一仓库失败即终止整个安装。解决方案# 1. 查找失效仓库配置文件 sudo grep -l 失效仓库关键词 /etc/yum.repos.d/*.repo # 2. 编辑该文件将 enabled1 改为 enabled0 sudo vi /etc/yum.repos.d/xxx.repo # 3. 清理缓存后重试安装 sudo yum clean all sudo yum install -y docker2.3 验证 Docker 安装成功正常输出版本号即表示安装成功docker --version3. 获取 Oracle Docker 镜像3.1 方式一阿里云镜像免登录推荐docker pull registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c3.2 方式二Oracle 官方镜像需登录docker login container-registry.oracle.com docker pull container-registry.oracle.com/database/enterprise:19.3.0.03.3 方式三社区镜像备选docker pull docker.cnb.cool/kangaroohy/open-source/images/oracle:19.19.0-ee3.4 镜像版本选择说明版本镜像标签示例说明Oracle 18coracle:18c较老版本部分环境仍在使用Oracle 19coracle:19c长期支持版本推荐生产使用Oracle 21coracle:21c创新版本适合新项目评估Oracle 23aifree:23.7.0.0最新版本AI 特性增强选择时注意镜像仓库是否提供对应架构x86_64 / aarch64支持。4. 镜像导出与无网环境迁移可选当目标服务器处于隔离内网、无法直接拉取镜像时采用saveload方式迁移。4.1 有网机器导出镜像为 tar# Windows docker save -o C:\oracle19c.tar registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c # Linux / Mac docker save -o /opt/oracle19c.tar registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c4.2 传输 tar 文件至目标服务器使用 U 盘、SCP、FTP 等方式将 tar 文件复制到目标服务器4.3 无网目标服务器导入镜像docker load -i /opt/oracle19c.tar docker images | grep oracle # 验证导入成功示例5. 启动 Oracle 容器5.1 创建数据持久化目录在宿主机上创建一个目录用于存放 Oracle 数据文件防止容器删除后数据丢失。路径可根据实际情况自定义例如/data/oracle、/home/oracle-data等。mkdir -p /your/custom/path建议选择磁盘空间充足的目录并与后续-v挂载参数保持一致。5.2 docker run 启动命令以下为启动模板带# 请按需修改注释的项请根据实际环境调整docker run -d \ --name oracle19c \ -p 1521:1521 \ # 外部端口:容器内端口可修改外部端口如 -p 15211:1521 -p 5500:5500 \ # EM 控制台端口可修改外部端口 -e ORACLE_PDBorclpdb \ # 可插拔数据库名称连接时需使用 -e ORACLE_PWDYourStrongPassword \ # 管理员密码请修改为强密码 -e ORACLE_CHARACTERSETAL32UTF8 \ # 字符集可按需修改 -e INIT_SGA_SIZE3000 \ # SGA 内存MB根据宿主机资源调整 -e INIT_PGA_SIZE1000 \ # PGA 内存MB根据宿主机资源调整 -v /your/custom/path:/opt/oracle/oradata \ # 左侧替换为 5.1 创建的目录 registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c可变参数说明参数说明常见调整示例-p 1521:1521左为宿主机监听端口右为容器内固定端口宿主机端口可改为15211、30015等-p 5500:5500左为宿主机 EM 端口右为容器内固定端口宿主机端口可改为5501等-v左为宿主机目录右为容器内数据目录固定左侧改为 5.1 中创建的实际路径ORACLE_PDB数据库服务名可自定义外部连接时需保持一致INIT_SGA_SIZE / INIT_PGA_SIZE内存分配根据宿主机内存调整建议 SGA 不超过物理内存的 50%外部连接时服务名填写ORACLE_PDB的值端口填写-p左侧配置的宿主机端口。5.3 验证容器运行状态docker ps | grep oracle19c docker logs -f oracle19c # 首次启动约 5-15 分钟出现 DATABASE IS READY TO USE! 即就绪6. 连接与验证6.1 容器内连接docker exec -it oracle19c /bin/bash sqlplus / as sysdba验证 oracle本机可正常执行6.2 外部工具连接Navicat / SQL*Plus连接项值主机服务器 IP如 192.168.86.102端口1521或映射的外部端口服务名orclpdb与ORACLE_PDB保持一致用户名system密码ORACLE_PWD设置的值7. 常见问题排查7.1 外部无法连接容器IPv4 转发未开启现象容器内部sqlplus可正常连接但外部 Navicat 等工具连接超时或拒绝。根因Docker 宿主机 IPv4 转发功能被禁用外部流量无法通过端口映射进入容器。关键日志docker logs中可见WARNING: IPv4 forwarding is disabled. Networking will not work.解决方案# 1. 临时启用 IPv4 转发 sudo sysctl net.ipv4.ip_forward1 # 2. 永久生效 echo net.ipv4.ip_forward1 | sudo tee -a /etc/sysctl.conf # 3. 重启 Docker 服务及容器 sudo systemctl restart docker docker start oracle19c验证端口可达# Windows 本机测试 Test-NetConnection -ComputerName 192.168.86.102 -Port 1521看到TcpTestSucceeded : True即表示正常Navicat 即可连接。
【Docker-Oracle 19c】Linux 服务器 Docker 部署 Oracle 19c数据库指南
1. 前言Docker 部署 Oracle 具有部署快、资源省、迁移易等优势尤其适用于开发测试、CI/CD 及个人学习等非核心生产场景。适用场景Linux 服务器部署 Oracle 数据库涵盖有网/无网两种环境。版本选择本文以 Oracle 19c 为例实际操作可替换为 18c、21c、23ai 等其他版本只需更换镜像标签即可。2. 环境准备Docker 安装2.1 标准安装步骤有网环境下直接执行以下命令安装 Docker# 安装 Docker sudo yum install -y docker # 启动 Docker 服务 sudo systemctl start docker # 设置开机自启 sudo systemctl enable docker # 验证安装 docker --version2.2 yum 仓库失效导致安装失败异常处理执行yum install时如遇到以下报错按步骤处理Errors during downloading metadata for repo xxx: Status code: 404 错误Failed to download metadata for repo xxx原因系统配置了已失效的第三方 yum 仓库YUM 更新元数据时遇到任一仓库失败即终止整个安装。解决方案# 1. 查找失效仓库配置文件 sudo grep -l 失效仓库关键词 /etc/yum.repos.d/*.repo # 2. 编辑该文件将 enabled1 改为 enabled0 sudo vi /etc/yum.repos.d/xxx.repo # 3. 清理缓存后重试安装 sudo yum clean all sudo yum install -y docker2.3 验证 Docker 安装成功正常输出版本号即表示安装成功docker --version3. 获取 Oracle Docker 镜像3.1 方式一阿里云镜像免登录推荐docker pull registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c3.2 方式二Oracle 官方镜像需登录docker login container-registry.oracle.com docker pull container-registry.oracle.com/database/enterprise:19.3.0.03.3 方式三社区镜像备选docker pull docker.cnb.cool/kangaroohy/open-source/images/oracle:19.19.0-ee3.4 镜像版本选择说明版本镜像标签示例说明Oracle 18coracle:18c较老版本部分环境仍在使用Oracle 19coracle:19c长期支持版本推荐生产使用Oracle 21coracle:21c创新版本适合新项目评估Oracle 23aifree:23.7.0.0最新版本AI 特性增强选择时注意镜像仓库是否提供对应架构x86_64 / aarch64支持。4. 镜像导出与无网环境迁移可选当目标服务器处于隔离内网、无法直接拉取镜像时采用saveload方式迁移。4.1 有网机器导出镜像为 tar# Windows docker save -o C:\oracle19c.tar registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c # Linux / Mac docker save -o /opt/oracle19c.tar registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c4.2 传输 tar 文件至目标服务器使用 U 盘、SCP、FTP 等方式将 tar 文件复制到目标服务器4.3 无网目标服务器导入镜像docker load -i /opt/oracle19c.tar docker images | grep oracle # 验证导入成功示例5. 启动 Oracle 容器5.1 创建数据持久化目录在宿主机上创建一个目录用于存放 Oracle 数据文件防止容器删除后数据丢失。路径可根据实际情况自定义例如/data/oracle、/home/oracle-data等。mkdir -p /your/custom/path建议选择磁盘空间充足的目录并与后续-v挂载参数保持一致。5.2 docker run 启动命令以下为启动模板带# 请按需修改注释的项请根据实际环境调整docker run -d \ --name oracle19c \ -p 1521:1521 \ # 外部端口:容器内端口可修改外部端口如 -p 15211:1521 -p 5500:5500 \ # EM 控制台端口可修改外部端口 -e ORACLE_PDBorclpdb \ # 可插拔数据库名称连接时需使用 -e ORACLE_PWDYourStrongPassword \ # 管理员密码请修改为强密码 -e ORACLE_CHARACTERSETAL32UTF8 \ # 字符集可按需修改 -e INIT_SGA_SIZE3000 \ # SGA 内存MB根据宿主机资源调整 -e INIT_PGA_SIZE1000 \ # PGA 内存MB根据宿主机资源调整 -v /your/custom/path:/opt/oracle/oradata \ # 左侧替换为 5.1 创建的目录 registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c可变参数说明参数说明常见调整示例-p 1521:1521左为宿主机监听端口右为容器内固定端口宿主机端口可改为15211、30015等-p 5500:5500左为宿主机 EM 端口右为容器内固定端口宿主机端口可改为5501等-v左为宿主机目录右为容器内数据目录固定左侧改为 5.1 中创建的实际路径ORACLE_PDB数据库服务名可自定义外部连接时需保持一致INIT_SGA_SIZE / INIT_PGA_SIZE内存分配根据宿主机内存调整建议 SGA 不超过物理内存的 50%外部连接时服务名填写ORACLE_PDB的值端口填写-p左侧配置的宿主机端口。5.3 验证容器运行状态docker ps | grep oracle19c docker logs -f oracle19c # 首次启动约 5-15 分钟出现 DATABASE IS READY TO USE! 即就绪6. 连接与验证6.1 容器内连接docker exec -it oracle19c /bin/bash sqlplus / as sysdba验证 oracle本机可正常执行6.2 外部工具连接Navicat / SQL*Plus连接项值主机服务器 IP如 192.168.86.102端口1521或映射的外部端口服务名orclpdb与ORACLE_PDB保持一致用户名system密码ORACLE_PWD设置的值7. 常见问题排查7.1 外部无法连接容器IPv4 转发未开启现象容器内部sqlplus可正常连接但外部 Navicat 等工具连接超时或拒绝。根因Docker 宿主机 IPv4 转发功能被禁用外部流量无法通过端口映射进入容器。关键日志docker logs中可见WARNING: IPv4 forwarding is disabled. Networking will not work.解决方案# 1. 临时启用 IPv4 转发 sudo sysctl net.ipv4.ip_forward1 # 2. 永久生效 echo net.ipv4.ip_forward1 | sudo tee -a /etc/sysctl.conf # 3. 重启 Docker 服务及容器 sudo systemctl restart docker docker start oracle19c验证端口可达# Windows 本机测试 Test-NetConnection -ComputerName 192.168.86.102 -Port 1521看到TcpTestSucceeded : True即表示正常Navicat 即可连接。