| 标签格式 | 支持状态 |
|---|---|
latest[-faststart] | 🔵 长期支持 |
slim[-faststart] | 🔵 长期支持 |
full[-faststart] | 🔵 长期支持 |
23[-faststart]23[-slim][-faststart]23[-full][-faststart] | 🟢 当前支持 |
23.9[-faststart]23.9[-slim][-faststart]23.9[-full][-faststart] | 🟢 当前支持 |
23.8[-faststart]23.8[-slim][-faststart]23.8[-full][-faststart] | 🟡 已过时 |
23.7[-faststart] 及更早版本 | 🔴 不再支持 |
方括号 [] 中的内容表示可选标签,例如 23[-slim][-faststart] 包含以下具体标签:
23、23-slim、23-faststart、23-slim-faststart。
| 状态标识 | 说明 |
|---|---|
| 🔵 长期支持 | 镜像长期维护,持续提供 bug 修复和常规更新。 |
| 🟢 当前支持 | 镜像处于活跃支持阶段,提供修复和更新。 |
| 🟡 已过时 | 镜像已过时,仅修复严重 bug,建议升级至新版本。 |
| 🔴 不再支持 | 镜像停止维护,无更新且可能随时移除,强烈不建议使用。 |
(容器删除后数据丢失,但重启容器数据保留)
shelldocker run -d -p 1521:1521 -e ORACLE_PASSWORD=<你的密码> gvenzl/oracle-free
(数据保存在卷中,不受容器生命周期影响)
shelldocker run -d -p 1521:1521 -e ORACLE_PASSWORD=<你的密码> -v oracle-volume:/opt/oracle/oradata gvenzl/oracle-free
shelldocker exec <容器名或ID> resetPassword <新密码>
从 Oracle Database 23.5 Free 开始,提供 ARM 架构版本,镜像已支持多平台(multi-arch)。
以下项目已采用该镜像:
若你的项目使用了该镜像,可通过 GitHub Issue 申请添加到列表。
| 类型 | 标签后缀 | 说明 | 适用场景 |
|---|---|---|---|
| Slim | -slim | 最小化镜像,仅保留核心功能,牺牲部分扩展能力换取更小体积。 | 对镜像大小敏感,且无需 Oracle 高级功能的场景。 |
| 标准 | 无 | 平衡体积与功能,推荐大多数场景使用。 | 常规开发、测试、小型生产环境。 |
| Full | -full | 包含 Oracle 数据库完整功能,基于***安装包构建。 | 需要自定义扩展或深度定制数据库的场景。 |
| Faststart | *-faststart | 内置预初始化数据库,启动速度更快,但镜像体积较大。 | 自动化测试(频繁启停容器且无需持久化数据)。 |
各类型镜像的具体修改内容可参考 ImageDetails.md。
环境变量用于自定义容器初始化(仅首次启动时生效):
ORACLE_PASSWORD(必填)设置 SYS 和 SYSTEM 用户的初始密码。
ORACLE_RANDOM_PASSWORD(可选)设为非空值(如 yes),自动生成 SYS 和 SYSTEM 的随机密码,密码会打印到日志(格式:ORACLE PASSWORD FOR SYS AND SYSTEM: ...)。
ORACLE_DATABASE(可选)指定要创建或插拔的 PDB 名称。若容器内 /pdb-plug 目录存在 <名称>.pdb 文件,则自动插拔该 PDB;否则创建新 PDB。支持逗号分隔多 PDB(如 PDB1,PDB2)。
注意:创建新 PDB 会增加首次启动时间,若无需自定义 PDB,可直接使用默认的
FREEPDB1。
APP_USER(可选)创建应用用户,需配合 APP_USER_PASSWORD 或 APP_USER_PASSWORD_FILE 使用。18c+ 版本默认在 FREEPDB1 中创建,若指定 ORACLE_DATABASE,则同时在对应 PDB 中创建。
APP_USER_PASSWORD(可选)APP_USER 的密码,需与 APP_USER 同时指定。
通过 GitHub Marketplace 的 Setup Oracle DB Free 动作快速集成:
yamljobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: gvenzl/setup-oracle-free@v1 with: app-user: <应用用户名> app-user-password: <用户密码>
直接定义为服务容器(Service Container):
yamlservices: oracle: image: gvenzl/oracle-free:latest # 可替换为其他标签 env: ORACLE_RANDOM_PASSWORD: true # 随机生成管理员密码 APP_USER: my_user # 创建应用用户 APP_USER_PASSWORD: <用户密码> ports: - 1521:1521 # 映射数据库端口 # 健康检查配置 options: >- --health-cmd healthcheck.sh --health-interval 10s --health-timeout 5s --health-retries 10
连接信息:
oracle(容器内)或 localhost(宿主机)1521FREEPDB1my_user(上述配置中的 APP_USER)通过 Docker Compose 快速搭建开发/测试环境:
yamlversion: "3.8" services: oracle: image: gvenzl/oracle-free:latest # 镜像标签 ports: - "1521:1521" # 端口映射 environment: ORACLE_PASSWORD: sys密码 # SYS/SYSTEM 密码 APP_USER: my_user # 应用用户 APP_USER_PASSWORD: 用户密码 # 用户密码 healthcheck: # 健康检查 test: ["CMD", "healthcheck.sh"] interval: 10s timeout: 5s retries: 10 volumes: - ./my-init.sql:/container-entrypoint-initdb.d/my-init.sql:ro # 挂载初始化脚本
连接信息:
oracle;宿主机:localhost1521FREEPDB1通过内置命令 createAppUser 创建额外用户(含标准权限):
shell# 用法:createAppUser 用户名 密码 [目标PDB,默认FREEPDB1] docker exec <容器名或ID> createAppUser <应用用户> <用户密码> [<目标PDB>]
示例:在 PDB1 中创建用户 app_user,密码 app_pwd:
shelldocker exec my-oracle createAppUser app_user app_pwd PDB1
将 <PDB名称>.pdb 文件放入容器内 /pdb-plug 目录,并通过 ORACLE_DATABASE 指定 PDB 名称,即可自动插拔 PDB。
敏感信息(如密码)可通过文件传入,只需在环境变量后添加 _FILE 后缀,从容器内文件读取值。例如:
shelldocker run -d --name oracle-db -e ORACLE_PASSWORD_FILE=/run/secrets/oracle-passwd gvenzl/oracle-free
支持的变量:APP_USER_PASSWORD_FILE、ORACLE_PASSWORD_FILE、ORACLE_DATABASE_FILE。
不同容器技术(Docker/Podman/Kubernetes)的密钥管理机制不同,建议参考***文档。
容器首次启动时,会执行 /container-entrypoint-initdb.d 目录下的脚本(支持 *.sql、*.sql.gz、*.sql.zip、*.sh),按字母顺序执行(含子目录)。
*.sql/*.sql.gz/*.sql.zip:通过 SQL*Plus 以 SYS 用户连接到 FREE 实例执行,可用于创建 PDB、表空间等。若需初始化应用 schema,需在脚本中显式连接目标用户。*.sh:可执行脚本(带 x 权限)在新 shell 中运行;非可执行脚本会被 source 到当前 shell(可能影响环境变量,建议设为可执行)。本地创建 init_scripts 目录,包含以下文件:
1_create_user.sql:创建用户
sqlALTER SESSION SET CONTAINER=FREEPDB1; CREATE USER TEST IDENTIFIED BY test QUOTA UNLIMITED ON USERS; GRANT CONNECT, RESOURCE TO TEST;
2_init_data.sh:下载并执行数据脚本
bashcurl -LJO [***] sqlplus -s test/test@//localhost/FREEPDB1 @install.sql rm install.sql
启动容器时挂载目录:
shelldocker run -d -p 1521:1521 -e ORACLE_RANDOM_PASSWORD=yes -v ./init_scripts:/container-entrypoint-initdb.d gvenzl/oracle-free:23-slim
注意:脚本仅在首次初始化时执行,已有数据库不会重复执行。
若需在每次数据库启动后执行操作,可将脚本放入 /container-entrypoint-startdb.d 目录(支持文件类型与初始化脚本相同),每次容器启动(含重启)后执行。
数据库配置脚本可参考 config-scripts 目录。
如有问题或建议,可通过 GitHub Issues 提交。




来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429