Instalar Oracle en docker
Este manual es válido tanto para entornos Windows como Linux. A grandes rasgos, lo que hay que hacer es clonar el repositorio docker-images, generar a partir de él el contenedor de la base de datos en la versión que corresponda y acceder a ella. En los siguientes pasos se describe este proceso.
Las versiones de base de datos Oracle que se pueden instalar mediante este sistema a día de hoy son las siguientes:
- Oracle Database 21c (21.3.0) Enterprise Edition, Standard Edition 2 and Express Edition (XE)
- Oracle Database 19c (19.3.0) Enterprise Edition and Standard Edition 2
- Oracle Database 18c (18.4.0) Express Edition (XE)
- Oracle Database 18c (18.3.0) Enterprise Edition and Standard Edition 2
- Oracle Database 12c Release 2 (12.2.0.2) Enterprise Edition and Standard Edition 2
- Oracle Database 12c Release 1 (12.1.0.2) Enterprise Edition and Standard Edition 2
- Oracle Database 11g Release 2 (11.2.0.2) Express Edition (XE)
Puedes ver esta lista actualizada dentro del repositorio en la carpeta OracleDatabase/SingleInstance.
Prerrequisitos
Para poder hacer la instalación de una base de datos oracle en docker como se indica en esta guía es necesario cumplir con lo siguiente:
- Tener instalado docker.
- Tener instalado git.
- Tener una cuenta Oracle (Son gratuitas).
Descargar imagen
Oracle tiene una página en la que puedes encontrar todas las versiones de base de datos Oracle. La desventaja que tiene es que hay que tener una cuenta Oracle por lo que si no la tienes hay que creársela, es totalmente gratuito.
- El primer paso a realizar es acceder para descargar imagen de Oracle, y en el buscador que aparecerá en pantalla buscamos la versión que queramos instalar. En mi caso voy a instalar la versión 12c EE.
En la siguiente imagen vemos que hay varias subversiones. Recomiendo instalar siempre la última ya que suelen traer mejoras y correcciones. - A continuación, clicamos en el botón superior-derecha con nombre
Continue
. - Dentro de la opción que hemos escogido vienen muchas cosas como son base de datos, cliente, bash, etc. Vamos a deseleccionar todas y quedarnos con la que pone
Oracle Database [Versión]
a secas. Y seleccionamos el sistema operativo Linux x64 ya que es el que usa docker. - Le damos a continuar, aceptamos los términos y ya podemos descargar el zip que contiene nuestra base de datos.


Instalar la imagen Oracle en Docker
Para la instalación de la imagen docker usaremos el repositorio oficial de docker-images para oracle que hemos comentado anteriormente.
- Abrimos un termina, nos situamos en la ruta en la que queramos descargar el repositorio y lo clonamos:
- El zip que hemos descargado antes lo movemos al interior del repositorio a la versión que toque dentro de
docker-images/OracleDatabase/SingleInstance/dockerfiles/
. En este caso como estamos instalando 12c el archivo tiene que ir dentro de la carpeta12.2.0.1
. No descomprimir el archivo. - Renombremos el archivo zip con la estructura
LINUX.X64_[num-versión]_db_home.zip
que en nuestro caso seráLINUX.X64_12201_db_home.zip
. - Para crear la imagen de Oracle hay que tener varias cosas en cuenta al lanzar el script:
- Indicar versión de Imagen con el
-v
. - Indicar tipo de edición:
- Enterprise Edition
-e
- Standard Edition 2
-s
- Express Edition
-x
- Enterprise Edition
- En el caso de no querer una validación de MD5 o nos salte un error en este tendremos que añadir
-i
para saltárnosla.
- Indicar versión de Imagen con el
- Nos quedamos en la carpeta
dockerfiles
del repositorio y ejecutamos el script de la siguiente forma: - Una vez creado podremos ver la información del contenedor ejecutando
docker images
. Nos aparece el primero del listado debido a que es el último que ha sido creado. - Para crear el contenedor a partir de la imagen creada anteriormente ejecutamos un docker run con el nombre de la imagen y algunos parámetros extra como son el nombre del contenedor, contraseña y puertos a usar:
git clone https://github.com/oracle/docker-images.git
./buildContainerImage.sh -v 12.2.0.1 -i -e
Si obtenemos un error del tipo “Got permission denied while trying to connect to the Docker daemon socket”, es por un problema de permisos de docker en linux por lo que ejecutamos lo siguiente:
sudo chmod 666 /var/run/docker.sock
docker run --restart always --name oracle12c -p 1521:1521 -p 5500:5500 -e ORACLE_CHARACTERSET=UTF8 -e ORACLE_PWD=admin oracle/database:12.2.0.1-ee
Acceder a la base de datos
Hay muchas formas de acceder a la base de datos. Vamos a mostrar como acceder con sqlplus que viene instalado dentro del contenedor y con un gestor de base de datos externo.
Acceder con sqlplus
- Revisar si el contenedor está en marcha:
- Una vez el contenedor está en marcha se puede acceder a el:
- Le damos valor a la variable
ORACLE_SID
: - Accedemos a la base de datos con sqlplus y el usuario
SYSTEM
. La contraseña en este caso es admin pero es la que hayas dado aORACLE_PWD
al hacer el docker run:
docker ps
Nos tiene que aparecer todos los datos del contenedor en el caso de que esté iniciado. Si no lo está podemos ver los contenedores que tenemos y arrancarlos de esta forma:
docker ps -a
docker start [nombre del contenedor]
docker exec -it oracle19c /bin/bash
export ORACLE_SID=ORCLCDB
sqlplus system/admin as SYSDBA
Con esto yaestamos dentro de la consola de sqlplus y podemos ejecutar las sentencias SQL que queramos. Para salir de sqlplus escribimos exit
y estaremos en la consola del contenedor, para salir de ésta volvemos a ejecutar exit
y ya estaremos en la consola de nuestro terminal.
Acceder con gestor externo
Todos los gestores de base de datos crean la conexión a la base de datos de la misma forma. Los datos para acceder a nuestra base de datos son los siguientes:
- Host: localhost (Si da error probar con 127.0.0.1)
- Puerto: 1521
- SID: ORCLCDB
- Usuario: SYS as SYSDBA
- Contraseña: admin (La contraseña es la que hayas dado a
ORACLE_PWD
al hacer el docker run).