gpt4 book ai didi

oracle - 将 Docker DB 数据存储到本地持久性目录

转载 作者:行者123 更新时间:2023-12-02 18:15:11 25 4
gpt4 key购买 nike

我有一个使用 Oracle 作为其数据库的应用程序,我很想获得一个 Dockerized 版本的 Oracle 在本地工作。我正在使用 this Oracle image到目前为止,它工作得很好,完全如广告所宣传的那样!我拉了它并像这样运行它:

docker run -d -p 8080:8080 -p 1521:1521 sath89/oracle-12c

容器启动并运行需要一段时间,实际上是几分钟。下面你可以看到我运行 docker logs在大约 3 分钟的时间内多次命令,每次输出越来越多,直到它最终站起来运行!
MyUser:~ myuser$ docker logs f0a177ed739f
Database not initialized. Initializing database.
Starting tnslsnr

MyUser:~ myuser$ docker logs f0a177ed739f
Database not initialized. Initializing database.
Starting tnslsnr
Copying database files
1% complete
3% complete
11% complete

MyUser:~ myuser$ docker logs f0a177ed739f
Database not initialized. Initializing database.
Starting tnslsnr
Copying database files
1% complete
3% complete
11% complete
18% complete
26% complete
37% complete
Creating and starting Oracle instance
40% complete
45% complete

MyUser:~ myuser$ docker logs f0a177ed739f
Database not initialized. Initializing database.
Starting tnslsnr
Copying database files
1% complete
3% complete
11% complete
18% complete
26% complete
37% complete
Creating and starting Oracle instance
40% complete
45% complete
50% complete
55% complete
56% complete
60% complete
62% complete
Completing Database Creation
66% complete
70% complete
73% complete
85% complete
96% complete
100% complete
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/xe/xe.log" for further details.
Configuring Apex console
Database initialized. Please visit http://#containeer:8080/em http://#containeer:8080/apex for extra configuration if needed
Starting web management console

PL/SQL procedure successfully completed.

Starting import from '/docker-entrypoint-initdb.d':
found file /docker-entrypoint-initdb.d//docker-entrypoint-initdb.d/*
[IMPORT] /entrypoint.sh: ignoring /docker-entrypoint-initdb.d/*

Import finished

Database ready to use. Enjoy! ;)

然后我可以使用 SQLDeveloper 之类的工具连接到 localhost:1521并创建表格、类型等。到目前为止一切顺利!

但是,当我杀死这个容器( docker stopdocker rm )时,我对它所做的所有更改都会丢失!换句话说,下次我运行容器时(使用完全相同的 docker run 命令),还需要 3-4 分钟来初始化,然后我的所有更改(表创建等)从上次 session 开始现在都不见了!

有没有办法告诉 Docker(可能作为 docker run 命令的添加参数)将所有数据存储在我的主机/本地文件系统的某个位置?例如,我可以在 ~/myappdb/data 下创建一个“数据目录”吗?然后告诉 Docker 和/或容器内的 Oracle DB 将其所有数据存储到 ~/myappdb/data ,这样每次我杀死+重新启动容器时,我的数据都会被保留?

最佳答案

您可以使用参数-v--volume docker run 将数据库数据文件夹绑定(bind)到主机文件夹的命令:

docker run -d -p 8080:8080 -p 1521:1521 -v ~/myappdb/data:/u01/app/oracle sath89/oracle-12c

image sath89/oracle-12c 的文档中,他们绑定(bind) /u01/app/oracle容器的文件夹到主机文件夹 /my/oracle/data .

关于oracle - 将 Docker DB 数据存储到本地持久性目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49411766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com