linux - 提交后启动时Docker Oracle数据库失败

标签 linux database oracle docker

伙计们。

我刚遇到问题;我正在设置一个带有 Oracle 数据库的 Docker 环境。我以这种方式运行 oracledb 12c:

docker run -d -p 1521:1521 --name my-db sath89/oracle-12c

到目前为止一切顺利,如果我 docker logs 新容器运行良好,任何错误。

然后,我刚刚从另一台服务器导出了一个数据库,并将其导入到我的新数据库容器中。一切顺利,我可以毫无错误地导入它,并且我的环境成功启动。

当我尝试提交我之前创建的数据库容器时出现问题,我这样做:

docker commit my-db my-committed-db

提交成功,我得到了名为 my-committed-db 的新镜像,然后,我当然删除了所有旧容器。

但是当我以这种方式运行我在上一步中创建的图像时:

docker run -d -p 1521:1521 --name my-db my-committed-db

容器启动了,但是当我查看 docker 日志时,它只是退出 1。这就是我得到的:

docker logs -f my-db

    ls: cannot access /u01/app/oracle/oradata: No such file or directory
    Database not initialized. Initializing database.
    Starting tnslsnr
    Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/xe.log" for further details.

我无法查看日志文件,因为容器已停止。

对我做错了什么有什么想法吗?我是不是漏掉了什么?

谢谢。

最佳答案

解决方案是为 sath89/oracle-12c 编辑原始 Dockerfile 并删除 VOLUMES 层。然后,构建一个新镜像,在那里执行导入过程,然后使用该镜像进行提交。

关于linux - 提交后启动时Docker Oracle数据库失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38124642/

相关文章:

sql - 从 PL/SQL 函数返回 'table'(没有预定义列名)

linux - MonoDevelop 不工作(安装了 xterm)

linux - 从桌面快捷方式调用 shell 脚本时未读取 .bashrc

c# - LINQ 在运行时选择要查询的表

SQL 查找平均元组数(既不是最大值也不是最小值)

mysql - 链接数据库表标准实践

linux - 如何在 Linux 中停止/禁用 IPI(进程间中断)?

javascript - Tslint 升级错误

oracle - 尝试将日期值插入新表时出错(ORA-01858 : a non-numeric character was found where a numeric was expected )

Oracle如何从表中删除少数分区数据