我已经在Ubuntu 18.04上使用Official Docker files在docker容器中安装oracle数据库18.3 SE2(但不是EE)和12.2.0.1 SE2方面取得了某种成功,因为当我启动容器时,我得到了: / p>
#########################
DATABASE IS READY TO USE!
#########################
The following output is now a tail of the alert.log:
2019 - 03 - 06T12 : 43 : 19.265419 + 00 : 00
ORCLPDB1(3) : Completed : CREATE SMALLFILE TABLESPACE "USERS" LOGGING DATAFILE '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/users01.dbf' SIZE 5M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO
ORCLPDB1(3) : ALTER DATABASE DEFAULT TABLESPACE "USERS"
ORCLPDB1(3) : Completed : ALTER DATABASE DEFAULT TABLESPACE "USERS"
2019 - 03 - 06T12 : 43 : 20.130939 + 00 : 00
ALTER SYSTEM SET control_files = '/opt/oracle/oradata/ORCLCDB/control01.ctl' SCOPE = SPFILE;
2019 - 03 - 06T12:43 : 20.246414 + 00 : 00
ALTER SYSTEM SET local_listener = '' SCOPE = BOTH;
ALTER PLUGGABLE DATABASE ORCLPDB1 SAVE STATE
Completed : ALTER PLUGGABLE DATABASE ORCLPDB1 SAVE STATE
但是当我这样做时(从主持人那里)
telnet 172.17.0.1 1521
我明白了
尝试172.17.0.1 ... telnet:无法连接到远程主机:连接被拒绝
这是否意味着Oracle实例未在容器内启动?以及如何找到问题所在?
ifconfig
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1d4d7b01ae88 oracle/database-se:12.2.0.1 "/bin/sh -c 'exec $O…" 2 hours ago Up 2 hours (healthy) 1521/tcp, 5500/tcp oracle12se
我发布了on my blog的所有步骤。
答案 0 :(得分:1)
docker0接口不是您的容器的地址,它是所有docker容器的桥接口。
如果运行sudo docker inspect [container_id]
,则可以获得容器ip。例如,在上面给出的输出中,容器ID为1d4d7b01ae88
。
更标准的方法是在运行docker run
时使用-p参数将容器端口绑定到主机端口。这也是您的dockerfile的相关README中提到的内容。
例如:
$ sudo docker run -d -it --rm --name oracle18se oracle/database-se:18.3.0 \
-p [host-port]:1521 -p [host-port]:5500
当然,如果这样做,我建议您的主机不要暴露在外界或控制对相关端口的访问中。