Установка базы данных Oracle в Docker-контейнере с использованием официальных файлов Docker - PullRequest
0 голосов
/ 06 марта 2019

У меня уже есть какой-то успех с установкой базы данных Oracle 18.3 SE2 (но не EE) и 12.2.0.1 SE2 в Docker-контейнере с использованием Официальных файлов 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

но когда я делаю (с хоста)

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.0 , 12.2.0.1

Я опубликовал все шаги, которые ясделал в моем блоге .

1 Ответ

1 голос
/ 06 марта 2019

Интерфейс docker0 - это не адрес вашего контейнера, это интерфейс моста для всех контейнеров докера.

Вы можете получить ip контейнера, если вы запустите sudo docker inspect [container_id].Например, в приведенном выше выводе идентификатор контейнера равен 1d4d7b01ae88.

. Более стандартным подходом будет привязка порта контейнера к порту хоста с использованием аргумента -p при запуске docker run.Это также то, что упомянуто в соответствующем README для вашего файла Docker.

Например:

$ sudo docker run -d -it --rm --name oracle18se oracle/database-se:18.3.0 \ 
  -p [host-port]:1521 -p [host-port]:5500

Конечно, если вы сделаете это, я бы порекомендовал, чтобы ваш хост не подвергался воздействию внешнего мира или чтобы доступ к соответствующему порту контролировался.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...