Vous êtes sur la page 1sur 13

Administración de Sistemas Operativos

Profesor: Luis Enrique Colmenares Guillen


Practica Contenedores SQL y Oracle en Docker Linux
Oscar Amadeus Malagón Ortiz
Edson Hernández Ramírez.
Miguel Ángel Hernández Septiem.
Objetivo: Lo que pretendemos, es poder integrar el uso de las bbdd más usadas
del mercado (Oracle y MySQL) en nuestro entorno de desarrollo, sin
las engorrosas tareas de tener que instalárselas en nuestros equipos (en OSX esta
tarea es casi imposible en muchos de los casos) y pudiéndola compartir con el resto
de los miembros del equipo de una manera sencilla. Para ello partiremos de
imágenes disponibles en el Docker Hub con las versiones ‘express’ de los gestores
(Oracle y MySQL) y las ‘enriqueceremos’ para crear nuestra propia BBDD, a partir
de un ddl correspondiente a nuestro modelo.

Desarrollo:
Primero descargamos mySQL

 sudo apt-get update


 sudo apt-get install mysql-server
 mysql_secure_installation
Para comprobar que esta instalado y ejecutándose correctamente:
Systemctl status mysql.service

Docker pull mysql descarga la imagen


docker run corre/crea un contenedor.
-d indica que el contenedor permanecerá corriendo en segundo plano.
-p 33061:3306 conecta el puerto 33061 de nuestro sistema operativo con el puerto
3306 del contenedor.
--name mysql57 le da un nombre personalizado al contenedor.

-e MYSQL_ROOT_PASSWORD=secret asigna la contraseña "secret" al usuario


"root" de MySQL, -e sirve para configurar variables de entorno.
mysql:5.7 indica la imagen a partir de la cual se va a crear el contenedor, después de
los dos puntos se indica la versión específica de la imagen.
--character-set-server=utf8mb4 es una configuración específica de mysql, será la
codificación de caracteres por defecto cuando creemos bases de datos.
--collection-server=utf8mb4_unicode_ci le dice a mysql que use utf8mb4 en las
colecciones de datos.
Una vez ejecutado el comando, tendremos corriendo un servidor de MySQL.

Para conectarnos al servidor usando el propio docker:

docker exec -it mysql57 mysql -uroot -p


Ingresamos la contraseña del usuario root, en nuestro ejemplo "secret" y ya estamos
dentro de mysql para gestionar nuestras bases de datos. Si queremos usar nuestro
cliente MySQL preferido, por ejemplo Sequel Pro, los datos que usaremos para
conectarnos son:

 Host: 127.0.0.1
 User: root
 Password: secret
 Puerto: 3306

Servidor Oracle en Docker


Bajamos una imágen preconfigurada muy completa y con varias opciones. Existen
muchas en internet, pero nos quedamos con esta por las opciones admitidas.

# docker pull wnameless/oracle-xe-11g

Usamos el comando docker images para ver las imágenes que tenemos, vemos que
la imágen ocupa 2.23 GB en disco, que no es poco.
# docker images
REPOSITORY TAG IMAGE ID
CREATED SIZE
wnameless/oracle-xe-11g latest f794779ccdb9 7
weeks ago 2.23GB

Arrancaremos un contenedor con varias opciones activadas, acceso por SSH (22),
acceso al motor desde fuera (1521), permitiremos que se conecten al servidor desde
otros equipos de la red, solicitará clave para gestionarlo, desactivamos el I/O
Asincrónico de disco y activamos el usuario XDB.

# docker run -d --name ora11 -p 49160:22 -p 49161:1521 -p 8080:8080 \


-e ORACLE_ALLOW_REMOTE=true \
-e ORACLE_PASSWORD_VERIFY=true \
-e ORACLE_DISABLE_ASYNCH_IO=true \
-e ORACLE_ENABLE_XDB=true \
wnameless/oracle-xe-11g

Verificamos los puertos abiertos.

# nmap 172.17.0.2

Starting Nmap 7.60 ( https://nmap.org ) at 2017-11-28 09:09 CET


Nmap scan report for 172.17.0.2
Host is up (0.0000090s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
1521/tcp open oracle
8080/tcp open http-proxy
MAC Address: 02:42:AC:11:00:02 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 0.35 seconds

Ahora nos conectamos mediante SSh y verificamos que estamos usando un Ubuntu
Linux. (la clave de root es admin)

# ssh 172.17.0.2
The authenticity of host '172.17.0.2 (172.17.0.2)' can't be established.
root@172.17.0.2's password:

Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.9.65-1-MANJARO x86_64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by


applicable law.

Cambiamos la clave de root.

# passwd

Y actualizamos el sistema operativo


# apt upgrade
The following packages will be upgraded:
gcc-5-base libdb5.3 libssl1.0.0 libstdc++6 libsystemd0 libudev1 openssl
perl-base systemd systemd-sysv wget

Verificamos que está corriendo el Motor Oracle.

# ps -A | grep oracle
152 ? 00:00:00 oracle
154 ? 00:00:00 oracle
156 ? 00:00:00 oracle
160 ? 00:00:00 oracle
162 ? 00:00:00 oracle
164 ? 00:00:00 oracle
166 ? 00:00:00 oracle
168 ? 00:00:00 oracle
170 ? 00:00:00 oracle
172 ? 00:00:00 oracle
174 ? 00:00:00 oracle
176 ? 00:00:00 oracle
178 ? 00:00:00 oracle
180 ? 00:00:00 oracle
182 ? 00:00:00 oracle
184 ? 00:00:00 oracle
186 ? 00:00:00 oracle
188 ? 00:00:00 oracle
190 ? 00:00:00 oracle
192 ? 00:00:00 oracle
200 ? 00:00:01 oracle
202 ? 00:00:00 oracle
218 ? 00:00:00 oracle
228 ? 00:00:00 oracle
230 ? 00:00:00 oracle
736 ? 00:00:00 oracle
740 ? 00:00:00 oracle

Ahora desde un navegador en nuestro equipo

http://172.17.0.2:8080/

Usuario y clave de la interfaz web: XDB / xdb.


Luego dentro para comunicarnos con el motor debemos usar Usuario y clave del
motor: sys / oracle y system/oracle

Desde nuestro equipo real podemos conectarnos al contenedor y luego al motor


Oracle.

# ssh 172.17.0.2
root@172.17.0.2's password:
Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.9.65-1-MANJARO x86_64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
Last login: Tue Nov 28 08:11:21 2017 from 172.17.0.1
root@46a4d1de6867:~# sqlplus
SQL*Plus: Release 11.2.0.2.0 Production on Tue Nov 28 08:25:08 2017
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Enter user-name: system
Enter password:
Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

Ahora creamos un tablespace con su correspondiente datafile. (10mb para pruebas)


SQL> create tablespace dockertips datafile 'datafile1.dbf' size 10M;
Tablespace created.

Creamos un nuevo usuario indicando su clave y el tablespace temporal.

SQL> create user dockeruser identified by user1234 temporary tablespace


TEMP;
User created.

Le damos permisos de acceso al motor.

SQL> grant connect to dockeruser;


Grant succeeded.

Ahora definimos que su tablespace standard es dockertips, le damos permisos de uso


en el tablespace y permisos de crear tablas.

SQL> alter user dockeruser default tablespace dockertips;


User altered.

SQL> alter user dockeruser quota unlimited on dockertips;


User altered.

SQL> grant create table to dockeruser;


Grant succeeded.

Ahora nos conectamos como el usuario “dockeruser”, creamos una tabla e


insertamos un registro en ella.
# sqlplus dockeruser
SQL*Plus: Release 11.2.0.2.0 Production on Tue Nov 28 08:48:48 2017
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Enter password:
Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

SQL> create table Alumnos (id int, data varchar(20));


Table created.

SQL> insert into Alumnos values (1, 'Matricula_Alumno');


1 row created.

SQL> select * from t1;


ID DATA
---------- --------------------
1 Matricula_Alumno

Vous aimerez peut-être aussi