У меня уже есть какой-то успех с установкой базы данных oracle 18.3 SE2 (но не EE) и 12.2.0.1 SE2 в контейнере докеров с использованием Официальные файлы Docker в Ubuntu 18.04, потому что когда я запускаю контейнер, я получаю это:
#########################
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
но когда я это сделаю (от ведущего)
телнет 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
Файлы докеров: 18.3.0, 12.2.0.1
Я опубликовал все шаги, которые я сделал в моем блоге.





Интерфейс docker0 — это не адрес вашего контейнера, это интерфейс моста для всех контейнеров докеров.
Вы можете получить IP-адрес контейнера, если запустите sudo docker inspect [container_id]. Например, в приведенном выше выводе идентификатор контейнера равен 1d4d7b01ae88.
Более стандартным подходом было бы привязать порт контейнера к порту хоста, используя аргумент -p при запуске docker run. Это также упоминается в соответствующем ПРОЧТИ МЕНЯ для вашего dockerfile.
Например.:
$ sudo docker run -d -it --rm --name oracle18se oracle/database-se:18.3.0 \
-p [host-port]:1521 -p [host-port]:5500
Конечно, если вы это сделаете, я бы порекомендовал, чтобы ваш хост не подвергался воздействию внешнего мира или чтобы доступ к соответствующему порту контролировался.