无法启动 Oracle Database XE 18.4 Docker Container



在使用WSL2创建Oracle Database XE 18.4映像后,我遇到了这个问题。我正在尝试基于此映像创建一个容器,并且不断收到这些错误,即使我正在执行与 Oracle 提供的本教程中要求完全相同的操作。 当我尝试创建容器并首次打开它时,会出现错误

sed: can't read /etc/oratab: No such file or directory
/opt/oracle/runOracle.sh: line 194: /etc/init.d/oracle-xe-18c: No such file or directory
grep: /etc/oratab: No such file or directory
/opt/oracle/checkDBStatus.sh: line 18: oraenv: No such file or directory
#####################################
########### E R R O R ###############
DATABASE SETUP WAS NOT SUCCESSFUL!
Please check output for further info!
########### E R R O R ###############
#####################################
The following output is now a tail of the alert.log:
tail: cannot open '/opt/oracle/diag/rdbms/*/*/trace/alert*.log' for reading: No such file or directory
tail: no files remaining

我想知道我到底能做些什么来解决这些错误并使该数据库运行。事实上,我无法验证日志中提到的这些文件是否存在,因为我甚至无法连接到这个容器,因为它由于这些错误而保持打开大约 5 秒.
我在与 WSL2.
我的 Docker 安装信息是:

Client: Docker Engine - Community
Cloud integration: 1.0.12
Version:           20.10.5
API version:       1.41
Go version:        go1.13.15
Built:             Tue Mar  2 20:14:53 2021
OS/Arch:           windows/amd64
Context:           default
Server: Docker Engine - Community
Engine:
Version:          20.10.5
API version:      1.41 (minimum version 1.12)
Go version:       go1.13.15
Git commit:       363e9a8
Built:            Tue Mar  2 20:15:47 2021
OS/Arch:          linux/amd64
containerd:
Version:          1.4.4
runc:
Version:          1.0.0-rc93
docker-init:
Version:          0.19.0

XE v18.4.0 的Dockerfile与同一存储库中的所有其他版本不同,因为它尝试在容器构建阶段使用 https 直接从 Oracle Web 服务器拉取映像。但是容器构建阶段本身发生在容器内(FROM...),所以,就我而言,它失败了,因为它没有正确的互联网连接(带有https问题的糟糕代理)。映像已创建,但不包含数据库引擎。

我已经修改了OracleDatabaseSingleInstancedockerfiles18.4.0内部的Dockerfile,以便不再使用 https 源,它会在映像内执行(已下载)oracle-database-xe-18c-1.0-1.x86_64.rpmCOPY并将其安装在"本地"。

我使用另一个版本的Dockerfile作为模板,但这很简单。

隐藏在docker-imagesOracleDatabaseSingleInstanceREADME.md中的内容如下:

重要说明:您必须提供 Oracle 数据库的安装二进制文件(Oracle Database 18c XE 除外)并将它们放入dockerfiles/<version>文件夹中。您只需为要安装的版本提供二进制文件。二进制文件可以从 Oracle 技术网络下载,请确保您使用 linux 链接:Linux x86-64。所需的文件名为linuxx64_<版本>_database.zip。您还必须确保为yum提供互联网连接。请注意,不得解压缩二进制文件。脚本将为您处理,如果您手动解压缩它们,则会失败!

如果您从 https://www.oracle.com/uk/database/technologies/xe-downloads.html 下载 OracleXE RPM 并按照文档中的说明将其复制到版本目录中,那么在构建 Oracle XE docker 映像时,它似乎使用下载的 RPM 对 Oracle XE 进行了完整安装。

如果您在构建 Docker 映像之前跳过 RPM 的手动下载,似乎将构建容器,但它会在运行时尝试进行下载,至少对我来说,这不起作用。

构建 Docker 映像后,可以使用以下命令启动容器:

docker run --name oraclexe 
-p 51521:1521 
-p 55500:5500 
-v [HOST_PATH]:/opt/oracle/oradata 
-e ORACLE_PWD=mysecurepassword 
-e ORACLE_CHARACTERSET=AL32UTF8 
oracle/database:18.4.0-xe

其中HOST_PATH是 Oracle 将在其中存储数据库的本地目录的路径。

最新更新