使用官方Dockerfile在Docker容器中安装Oracle数据库

时间:2019-03-06 16:20:38

标签: oracle docker

我已经在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

Dockerfiles:18.3.012.2.0.1

我发布了on my blog的所有步骤。

1 个答案:

答案 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

当然,如果这样做,我建议您的主机不要暴露在外界或控制对相关端口的访问中。