Esta es una Guia para correr un contenedor con Oracle Database instalado y poder conectarse al contenedor desde un cliente de Oracle. Asumiendo que nunca has hecho algo parecido.
No me detendré mucho en explicaciones, pondré links a la documentación de las herramientas que se necesitan.
Instalar WSL2
Para Instalar docker (en Windows) primero necesitamos WSL2 (Subsistema de Windows para Linux version 2) Instalado. Docker lo necesita.
Link: docs.microsoft.com/en-us/windows/wsl/install
Leer prerequisitos en la documentación en el Link de arriba.
Para Instalar WSL ejecuta desde Powershell el comando (si se instala por primera vez):
wsl --install
Este comando habilitará los componentes requeridos, descargará el kernel de Linux más reciente, establecerá WSL 2 como predeterminado e instalará una distribución de Linux (Ubuntu de manera predeterminada, -d para especificar la distribución a instalar).
Instalar Windows Terminal
Link: https://www.microsoft.com/store/productId/9N0DX20HK701
Esta es una terminal que te permite utilizar distintas Shells y es mucho mejor que utilizar la terminal por defecto de Windows para la CMD o Powershell.
Además te permite seleccionar entre las distintas lineas de comandos de distribuciones Instaladas por WSL.
Instalar Docker
Link: docs.docker.com/desktop/install/windows-ins..
Para Instalar docker necesitas descargar el Instalador de Docker Desktop, este viene con todo los que necesitas, como Docker compose, el docker deamon, etc.
Hay algunas formas de Instalarlo, te muestro dos.
Desde el instalador
Simplemente descarga el Docker Desktop y ejecuta el instalador
O desde la terminal :)
Abre Powershell y escribe
winget install 'Docker Desktop'
Y comenzará la descarga e instalación
Winget es el servicio de manejo de paquetes de windows
Configurar Docker para correr en distribuciones de WSL
Una vez Docker Desktop esté instalado, necesitas habilitar la integración con WSL, andá a Settings>Resources>WSL Integration
Y habilita la integración de docker con las distribuciones que necesites, en mi caso tengo Ubuntu y Arch
Luego Apply & Restart
Creando contenedor
Una vez tengas Docker debidamente Instalado en tu máquina pasamos a Crear la imágen de Oracle Database.
Para crear un contenedor en docker necesitas una imágen que le diga a docker cómo va a crear ese contenedor, por lo general, puedes bajar las imágenes desde el docker hub con el comando:
docker pull nombreDeLaImagen:tagDeLaImagen
Oracle Database no tiene una imágen en el Docker Hub, pero sí un script de creación en un repostitorio en Github.
Link: https://github.com/oracle/docker-images
Como necesitamos ese script, lo vamos a bajar con Git desde Github
Instalar Git
Link: https://git-scm.com/download/win
Puedes Instalar Git desde ese Link o con el comando desde powershell
winget install --id Git.Git -e --source winget
Desde el instalador se te va a instalar Git Bash. Puedes configurar Git después pero a lo que vamos
Creando la Imágen
Clonando repositorio
Para clonar el repositorio en tu entorno local, ve al link y copia la dirección de HTTPS
Luego desde la terminal, ve a la ruta donde vas a clonar el repositorio y ejecuta el comando:
(para cambiar de directorio utiliza: cd ruta_donde_querés_ir)
Git clone https://github.com/oracle/docker-images.git
Una vez clonado el repositorio, debes navegar hasta la ruta: OracleDatabase/SingleInstance/dockerfiles
En esa carpeta podemos ver las distintas versiones de Oracle para las que podemos crear una imágen y un script con terminación .sh, lo que indica que es un script en bash y no podemos utilizar powershell.
Vamos a ejecutar el script, así que elegimos la distribución que se te instaló con WSL para correr el script.
Click en Ubuntu.
Una vez hagas eso vas a poder usar tu sistema linux desde windows.
Muevete a la carpeta donde está el script de creación con el comando:
cd /mnt/c/users/TU-USUARIO/RUTA-repositorio/docker-images/OracleDatabase/SingleInstance/dockerfiles
Ahí está el script
Asegurate de que esté corriendo docker (solo abre docker desktop) y que hayas habilitado la integración con WSL en las configuraciones de Docker Desktop
Ejecuta el script con el comando:
./buildContainerImage.sh -v 21.3.0 -x
El numero después de -v es la versión que quieres de Oracle Database de las disponibles en la carpeta.
El script va a empezar a crear la imágen, pesa al rededor de 6 GB
Una vez creada la imágen podés verla desde windows o linux
Creando el contenedor (al fin :) )
Ahora hay que crear el contenedor, puedes usar docker run pero usaremos un docker compose file para obtener las ventajas de docker compose.
Puedes copiarlo de aquí y crear tu archivo "docker-compose.yml"
version: 3.8
services:
database:
container_name: oracle-database
image: oracle/database:21.3.0-xe
ports:
# Host to container
- 52521:1521
- 55500:5500
environment:
- ORACLE_PWD=oracle1234
- ORACLE_CHARACTERSET=AL32UTF8
volumes:
- type: bind
source: .\oradata
target: /opt/oracle/oradata
- type: bind
source: .\scripts-setup
target: /opt/oracle/scripts/setup
- type: bind
source: .\scripts-startup
target: /opt/oracle/scripts/startup
El docker compose file debe estar en la carpeta que hayas destinado para trabajar con oracle y debes crear las carpetas oradata, scripts-setup y scripts-startup
Estas son carpetas a las que se hace referencia en el docker compose como parte de bindmounts
Esto te va a permitir acceder a los archivos de Oracle en el contenedor desde tu PC anfitrión, como los tablespaces que hayas creado.
Una vez todo en su lugar hay que usar el docker compose file.
Usa el comando
docker compose up -d
Para levantar los servicios especificados en el dockerfile, en este caso solo la base de datos
Puedes correr el comando de docker compose sin la flag "-d" para ver los logs de ejecución directamente si hay algún error
Puedes ver los logs desde Docker Desktop
Puedes ver si el contenedor está corriendo con el comando docker ps
LISTO!!!
Ahora ya tienes un contenedor con Oracle Database escuchando por el puerto 52521 de tu PC al que podés conectarte, la contraseña es oracle1234 como se especificó en el docker compose file.
Como ejemplo voy a crear una conexión desde sqldeveloper a mi contenedor
Ventajas de docker compose
Si quieres remover el contenedor o cambiar algo en él como agregar más contenedores conectados por una red puedes hacerlo facilmente modificando el Docker Compose File.
Comando para quitar el contenedor con compose:
docker compose down
Para que funcione, debés estar en la ruta donde se encuentra el docker compose que usaste para crear el contenedor de Oracle.
Documentación de docker compose: https://docs.docker.com/compose/
Documentación de docker https://docs.docker.com
Esta guía es algo que tenía guardado hace tiempo y decidí compartirla hasta ahora, gracias y si quedó alguna duda no dudes en preguntar. 😉