SlideShare una empresa de Scribd logo
1 de 7
Descargar para leer sin conexión
BASES DE DATOS y CONTENEDORES (dockers) – Facultad de Telemática – BDA 2019A – rherrera@ucol.mx 1
++++++++++++++++++++++++ CONTENEDORES (dockers) ++++++++++++++++++++++++++
-Que son los dockers?
-Diferencias entre dockers vs Máquinas Virtuales
-Arquitectura de los dockers
-Tendencias y principales aplicaciones
-Que se necesita para utilizar estas tecnologías?
-docker101
- instalación
- comandos básicos
- repositorios docker
- dockers vs images
-- docker-hello-world
-docker102 - implementación de BD en dockers
-- MySQL Server o PostgreSQL en docker
-- Como acceder a la BD del docker desde una interfaz como MySQLworkbench
o pgAdmin?
--- Referencias --------------------------------------------------------------
Docker Commands
https://dzone.com/articles/docker-command-cheatsheet
Play with Docker Classroom
https://training.play-with-docker.com/
https://training.play-with-docker.com/ops-s1-hello/
Hello world y basic Linux Alpine
Tutorial - Docker Quickstart
https://linuxacademy.com/devops/training/course/name/docker-quick-start
BASES DE DATOS y CONTENEDORES (dockers) – Facultad de Telemática – BDA 2019A – rherrera@ucol.mx 2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DOCKER 101 - Docker Commands -
https://dzone.com/articles/docker-command-cheatsheet
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- List images:
>docker images
--List running docker processes:
>docker ps
--List all processes that were ever run:
>docker ps -a
--List only the container IDs:
>docker ps -a -q
-- Running processes:
docker run <image>
docker run -d <image> --> run in disconnected / daemon mode
docker run --name="Some Name" --> name the running instance
docker start <name> --> will restart a closed / exited instance of the image
docker exec -it <name> <command> -->run a command within a running container
-- without changing the state of the running container
docker stop <name> --> stop a running container by using the name
-- Cleaning up Docker:
docker rm containerid --> removes an instance of the container that was run
docker rm `docker ps -a -q` --> remove all stopped containers
docker rmi image-name --> removes the docker image and its dependencies
--Redirect port:
docker run -P --> will redirect the container's port to a random port
-- on the host machine's user port (port no 32,000+)
docker run -p 8080:80 --> will redirect the container's port 80 to a port 8080
-- on the host machine's user port
docker port <container-name> --> will list the port mapping information
BASES DE DATOS y CONTENEDORES (dockers) – Facultad de Telemática – BDA 2019A – rherrera@ucol.mx 3
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DOCKER 101 - Tips para usar docker en Windows para configurar servers de BD
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
---------------------------------------------------------
Para windows 10 home
no funciona el más nuevo Docker Windows installer (533 MB) requiere Win10 PRO,
en su lugar se puede usar el dockerToolbox (216MB)
Se descarga el DockerTools
Se instala con doble click
Se corre desde el acceso directo, se abre una terminal y se empieza a
configurar tarda como 3 minutos en configurar, al final queda un PROMPT y
expone una IP que le asigno a una VM, pe.e
192.168.99.100
*** Se puede interactuar con docker en Windows, usando al menos 2 opciones:
1) Usando el Docker QuickstartTerminal,
2) Usando la interfaz gráfica GUI de Kitematic
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comandos básicos para docker
---------------------------------------------
$ docker --version
-- muestra la version del docker
$ docker-machine ip -- saber la IP del docker
$ docker-machine ls -- da un listado de la maquinas corriendo
$ docker-machine url -- da el URL de acceso, p.e tcp://192.168.99.100:2376
-- da un listado de las imagenes que tiene descargadas localmente
$ docker image ls --> es equivalente a
$ docker images
-- descarga una mini VM con una app que imprime el hola mundo
$ docker run hello-world
-- descarga una MV de ubuntu y abre su bash... con exit terminal
$ docker run -it ubuntu bash
-- descarga la ultima imagen del centos
$ docker pull centos:latest
-- corre la MV del centos y se abre en modo shell interactivo
$ docker run -it centos:latest
-- da un listado de los contenedores que estan corriendo localmente
$ docker container ls
$ docker ps -- es igual
-- listado de los contenedores que han corrido al menos una vez
$ docker container ls -a
BASES DE DATOS y CONTENEDORES (dockers) – Facultad de Telemática – BDA 2019A – rherrera@ucol.mx 4
-- ******* BORRADO de IMAGENES y CONTAINERs ***********************
-- CUIDADO: al borrar una imagen *** una imagen es diferente del
-- container.. Si tuviera asociado un container se tendrá que forzar
-- o borrar previamente el container
$ docker rmi <imageName:imagenTag> -f -- -forzar
-- *** borrar imagenes UNTAGGEDs <none>:<none>
$ docker rmi $(docker images -q -f dangling=true)
-- borrar un contenedor
-- *** Aguas, pudiera estar corriendo como un servicio.
$ docker rm <dockerName:Tag> -- ó tambien:
$ docker rm <container_ID>
-- terminar la sesion con el docker
$ exit
BASES DE DATOS y CONTENEDORES (dockers) – Facultad de Telemática – BDA 2019A – rherrera@ucol.mx 5
- - ******* Utilización de DOCKERS para BASES DE DATOS ******************
-- Instalar el docker para MYSQL
-- ++++ Docker de MySQL https://hub.docker.com/_/mysql/
- - *********************************************************************
$ docker pull mysql
-- descarga el ultimo docker para MySQL
$ docker pull mysql:5.7 -- descarga la version 5.7, la 8.0 tiene detalles
-- de compatibilidad en la autentificacion
-- habria que usar "mysql_native_password"
-- En la documentacion indica que así se lanza el server
$ docker run --name nombreDelServer
-e MYSQL_ROOT_PASSWORD=my-secret-pw
-d mysql:tag
-- de esta forma se podra usar el mySQL server como daemon,
-- pero solo dentro del docker...
-- **Se puede PUBLICAR(exponer) el puerto** para acceder desde la PC host
-- se corre el server de MySQL, se le asigna una Tag y el pass del root
$ docker run -p 3306:3306
--name mysql57 <-- se escribe todo de corrido
-e MYSQL_ROOT_HOST=%
-e MYSQL_ROOT_PASSWORD=password
-d mysql:5.7
$ docker run -p 3307:3307 --name server55 -e MYSQL_ROOT_HOST=%
-e MYSQL_ROOT_PASSWORD=password -d mysql:5.5
-- --name asigna un nombre al contenedor.
-- -e permite asignar valores a run time variables,
-- como el pass del root con: 'MYSQL_ROOT_PASSWORD' y
-- el HOST con 'MYSQL_ROOT_HOST'
-- -d configura el contenedor como un daemon (corre en segundo plano)
-- se checa si queda corriendo el mysql
$ docker container ls
-- Si quisieramos eliminar una instancia del docker se usa "rm".
-- se puede usar para reconfigurar un docker
$docker rm mysql57 <-- <servername> el nombre asignado con --name
--checar los logs del mysql server <servername>
$ docker logs mysql57
--checar datos finos de la configuracion del docker, como la IP interna
$ docker inspect mysql57
-- regresa un jSON con todos los datos
-- matar el proceso, reiniciar, iniciar, parar, el container del server
$docker kill mysql57
$docker restart mysql57
$docker start mysql57
$docker stop mysql57
BASES DE DATOS y CONTENEDORES (dockers) – Facultad de Telemática – BDA 2019A – rherrera@ucol.mx 6
-- +++ conexiones al MySQL server ------------------------------------------
-- conectarse dentro del docker como cliente al puerto default 3306
-- ** CUIDAR el nombre de la imagen que corresponda con su etiqueta,
-- porque sino tratará de instanciar un "mysql:latest"
-- --link <mysql57:mysql> --rm <mysql:5.7>
-- servername:imagen imagen:tag
$ docker run -it <-- para establecer session interactiva en la misma terminal
--link mysql57:mysql <--enlazar al contenedor del server
--rm mysql:5.7 <--borra el contenedor al terminar sesion
sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR"
-P"$MYSQL_PORT_3306_TCP_PORT" -uroot
-p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'
-- version más corta sin incluir referencia al pass
$ docker run -it --link mysql57:mysql --rm mysql:5.7
sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR"
-P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p'
-- version aún más corta, usando directamente los valores e IP de la VM
$ docker run -it --link mysql57:mysql --rm mysql:5.7
sh -c 'exec mysql -h192.168.99.100 -uroot -p'
-- Otra forma de lanzar el cliente de mysql (mysql.exe)
-- es sin instanciar un nuevo Docker, utilizando el mismo container
-- del server que ya está corriendo … con docker EXEC
-- $docker exec -it <instancia> <comando>
$ docker exec -it mysql57 mysql -uroot -ppassword -P3306
-- se puede omitir el -h y asumirá localhost, se puede omitir también el -P
-- ++++++++ Para conexiones desde la maquina Host +++++++++++++++++++++++++
-- 1) obtener IP de VM: $docker-machine ip -> (192.168.99.100)
-- 2) Haber instanciado el server con el puerto expuesto
-- 3) conectar con consola cliente o workbench
>mysql -h192.168.99.100 -P3306 -uroot -p
BASES DE DATOS y CONTENEDORES (dockers) – Facultad de Telemática – BDA 2019A – rherrera@ucol.mx 7
- - ******** INSTALAR el docker para PostgreSQL server *************
-- https://hub.docker.com/_/postgres/
- - *****************************************************************
-- descargar docker de PostgreSQL server
$docker pull postgres:9.5
-- con el tag “9.5” se indica la version 9.5, si no será 'latest'
-- correr la imagen del Postgre como server (daemon),
$ docker run -p 5432:5432 --name pgserver95
-e POSTGRES_PASSWORD=password -d postgres:9.5
-- -p 5432:5432 se publica el puerto interno del docker como publico
-- --name , -e -d similares a la ejecucion del MySQL
-- +++ conexiones al servidor del posgreSQL +++++++++++++++++++++++++++++++++
-- una vez expuesto el puerto, se podria conectar desde el pgAdmin u otros
-- conectarse via terminal con el cliente "psql.exe"
$ docker run -it --link pgserver95:postgres --rm postgres:9.5 psql -h
postgres -U postgres
-- cuidar el nombre de la imagen que corresponda con su respectiva etiqueta,
-- porque sino tratará de instanciar un "postgres:latest"
-- --link <pgserver95:postgres> --rm <postgres:9.5>
-- servername:imagen imagen:tag
/* comandos basicos para terminal "psql.exe":
? ayuda sobre comandos pgsql
l lista las databases
dt lista las tablas
c conecta a DB
q salir
*/
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Más contenido relacionado

La actualidad más candente

Tutorial voz ip packet tracer
Tutorial voz ip packet tracerTutorial voz ip packet tracer
Tutorial voz ip packet tracer
José Guerrero
 
MySQL Server Backup, Restoration, And Disaster Recovery Planning Presentation
MySQL Server Backup, Restoration, And Disaster Recovery Planning PresentationMySQL Server Backup, Restoration, And Disaster Recovery Planning Presentation
MySQL Server Backup, Restoration, And Disaster Recovery Planning Presentation
Colin Charles
 

La actualidad más candente (20)

Actividad 3: VLAN y ACL
Actividad 3: VLAN y ACLActividad 3: VLAN y ACL
Actividad 3: VLAN y ACL
 
Configuraciones básica en Router Cisco
Configuraciones básica en Router CiscoConfiguraciones básica en Router Cisco
Configuraciones básica en Router Cisco
 
Understanding docker networking
Understanding docker networkingUnderstanding docker networking
Understanding docker networking
 
Tutorial voz ip packet tracer
Tutorial voz ip packet tracerTutorial voz ip packet tracer
Tutorial voz ip packet tracer
 
Docker Networking Deep Dive
Docker Networking Deep DiveDocker Networking Deep Dive
Docker Networking Deep Dive
 
presentación de power point Que es una red LAN..??
presentación de power point Que es una red LAN..??presentación de power point Que es una red LAN..??
presentación de power point Que es una red LAN..??
 
Docker by Example - Basics
Docker by Example - Basics Docker by Example - Basics
Docker by Example - Basics
 
Configuración de servicios DNS DHCP WEBSERVER Y EMAIL en packet tracer.
Configuración de servicios DNS DHCP WEBSERVER Y EMAIL en packet tracer.Configuración de servicios DNS DHCP WEBSERVER Y EMAIL en packet tracer.
Configuración de servicios DNS DHCP WEBSERVER Y EMAIL en packet tracer.
 
Docker Compose Explained
Docker Compose ExplainedDocker Compose Explained
Docker Compose Explained
 
Demystfying container-networking
Demystfying container-networkingDemystfying container-networking
Demystfying container-networking
 
Trabajo final instalacion de redes locales
Trabajo final instalacion de redes localesTrabajo final instalacion de redes locales
Trabajo final instalacion de redes locales
 
Kubernetes Webinar - Using ConfigMaps & Secrets
Kubernetes Webinar - Using ConfigMaps & Secrets Kubernetes Webinar - Using ConfigMaps & Secrets
Kubernetes Webinar - Using ConfigMaps & Secrets
 
Las clases de direcciones IPV4
Las clases de direcciones IPV4Las clases de direcciones IPV4
Las clases de direcciones IPV4
 
Implementación de un Servidor DHCP
Implementación de un Servidor DHCPImplementación de un Servidor DHCP
Implementación de un Servidor DHCP
 
MySQL Server Backup, Restoration, And Disaster Recovery Planning Presentation
MySQL Server Backup, Restoration, And Disaster Recovery Planning PresentationMySQL Server Backup, Restoration, And Disaster Recovery Planning Presentation
MySQL Server Backup, Restoration, And Disaster Recovery Planning Presentation
 
Dispositivos de interconexion
Dispositivos de interconexionDispositivos de interconexion
Dispositivos de interconexion
 
pg_chameleon MySQL to PostgreSQL replica made easy
pg_chameleon  MySQL to PostgreSQL replica made easypg_chameleon  MySQL to PostgreSQL replica made easy
pg_chameleon MySQL to PostgreSQL replica made easy
 
Docker Networking - Common Issues and Troubleshooting Techniques
Docker Networking - Common Issues and Troubleshooting TechniquesDocker Networking - Common Issues and Troubleshooting Techniques
Docker Networking - Common Issues and Troubleshooting Techniques
 
Oficina docker
Oficina dockerOficina docker
Oficina docker
 
Diccionario de datos
Diccionario de datosDiccionario de datos
Diccionario de datos
 

Similar a Docker 101 - dockers y Bases de Datos DB

Thunder cache 3.1.2 en centos 6.3
Thunder cache 3.1.2 en centos 6.3Thunder cache 3.1.2 en centos 6.3
Thunder cache 3.1.2 en centos 6.3
Loquenecesito,com
 
Instalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntuInstalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntu
David Vevelas
 

Similar a Docker 101 - dockers y Bases de Datos DB (20)

FROM lost to the docker
FROM lost to the dockerFROM lost to the docker
FROM lost to the docker
 
FROM lost to the Docker 2020
FROM lost to the Docker 2020FROM lost to the Docker 2020
FROM lost to the Docker 2020
 
Taller girona
Taller gironaTaller girona
Taller girona
 
Jenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker EcosystemJenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker Ecosystem
 
Docker WordPress
Docker WordPressDocker WordPress
Docker WordPress
 
Docker y PostgreSQL
Docker y PostgreSQLDocker y PostgreSQL
Docker y PostgreSQL
 
Primeros pasos con Docker
Primeros pasos con DockerPrimeros pasos con Docker
Primeros pasos con Docker
 
Dockers y wp
Dockers y wpDockers y wp
Dockers y wp
 
WordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - Quaip
WordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - QuaipWordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - Quaip
WordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - Quaip
 
Habilidades de linux
Habilidades de linuxHabilidades de linux
Habilidades de linux
 
Semana 7 Despliegue a producción ORACLE OCI
Semana 7   Despliegue a producción ORACLE OCISemana 7   Despliegue a producción ORACLE OCI
Semana 7 Despliegue a producción ORACLE OCI
 
Thunder cache 3.1.2 en centos 6.3
Thunder cache 3.1.2 en centos 6.3Thunder cache 3.1.2 en centos 6.3
Thunder cache 3.1.2 en centos 6.3
 
Introduction to docker. Stratio
Introduction to docker. StratioIntroduction to docker. Stratio
Introduction to docker. Stratio
 
Instalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntuInstalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntu
 
Instalar Docker Desktop y Kubernetes en Windows 10
Instalar Docker Desktop y Kubernetes en Windows 10Instalar Docker Desktop y Kubernetes en Windows 10
Instalar Docker Desktop y Kubernetes en Windows 10
 
Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry
Docker Ecosystem: Engine, Compose, Machine, Swarm, RegistryDocker Ecosystem: Engine, Compose, Machine, Swarm, Registry
Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry
 
Manejo de-redes-linux
Manejo de-redes-linuxManejo de-redes-linux
Manejo de-redes-linux
 
Bulma 441
Bulma 441Bulma 441
Bulma 441
 
Primeros pasos tema_11_bis
Primeros pasos tema_11_bisPrimeros pasos tema_11_bis
Primeros pasos tema_11_bis
 
Game of pods - Kubernetes
Game of pods - KubernetesGame of pods - Kubernetes
Game of pods - Kubernetes
 

Más de Roman Herrera

Más de Roman Herrera (6)

Python - Lenguaje de programación para Ciencia de Datos
Python - Lenguaje de programación para Ciencia de DatosPython - Lenguaje de programación para Ciencia de Datos
Python - Lenguaje de programación para Ciencia de Datos
 
Data Science learning roadmaps 2021
Data Science learning roadmaps 2021Data Science learning roadmaps 2021
Data Science learning roadmaps 2021
 
Herramientas y recursos tecnológicos para el Data Science
Herramientas y recursos tecnológicos para el Data ScienceHerramientas y recursos tecnológicos para el Data Science
Herramientas y recursos tecnológicos para el Data Science
 
Calidad de datos. Preparación y limpieza de los datos
Calidad de datos. Preparación y limpieza de los datosCalidad de datos. Preparación y limpieza de los datos
Calidad de datos. Preparación y limpieza de los datos
 
IoT - integración de particle photon con Alexa y Google Assistant
IoT - integración de particle photon con Alexa y Google AssistantIoT - integración de particle photon con Alexa y Google Assistant
IoT - integración de particle photon con Alexa y Google Assistant
 
Big data, NoSQL y tendencias en Bases de Datos 2018.
Big data, NoSQL y tendencias en Bases de Datos 2018.Big data, NoSQL y tendencias en Bases de Datos 2018.
Big data, NoSQL y tendencias en Bases de Datos 2018.
 

Último

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Último (15)

PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmeril
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 

Docker 101 - dockers y Bases de Datos DB

  • 1. BASES DE DATOS y CONTENEDORES (dockers) – Facultad de Telemática – BDA 2019A – rherrera@ucol.mx 1 ++++++++++++++++++++++++ CONTENEDORES (dockers) ++++++++++++++++++++++++++ -Que son los dockers? -Diferencias entre dockers vs Máquinas Virtuales -Arquitectura de los dockers -Tendencias y principales aplicaciones -Que se necesita para utilizar estas tecnologías? -docker101 - instalación - comandos básicos - repositorios docker - dockers vs images -- docker-hello-world -docker102 - implementación de BD en dockers -- MySQL Server o PostgreSQL en docker -- Como acceder a la BD del docker desde una interfaz como MySQLworkbench o pgAdmin? --- Referencias -------------------------------------------------------------- Docker Commands https://dzone.com/articles/docker-command-cheatsheet Play with Docker Classroom https://training.play-with-docker.com/ https://training.play-with-docker.com/ops-s1-hello/ Hello world y basic Linux Alpine Tutorial - Docker Quickstart https://linuxacademy.com/devops/training/course/name/docker-quick-start
  • 2. BASES DE DATOS y CONTENEDORES (dockers) – Facultad de Telemática – BDA 2019A – rherrera@ucol.mx 2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DOCKER 101 - Docker Commands - https://dzone.com/articles/docker-command-cheatsheet ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- List images: >docker images --List running docker processes: >docker ps --List all processes that were ever run: >docker ps -a --List only the container IDs: >docker ps -a -q -- Running processes: docker run <image> docker run -d <image> --> run in disconnected / daemon mode docker run --name="Some Name" --> name the running instance docker start <name> --> will restart a closed / exited instance of the image docker exec -it <name> <command> -->run a command within a running container -- without changing the state of the running container docker stop <name> --> stop a running container by using the name -- Cleaning up Docker: docker rm containerid --> removes an instance of the container that was run docker rm `docker ps -a -q` --> remove all stopped containers docker rmi image-name --> removes the docker image and its dependencies --Redirect port: docker run -P --> will redirect the container's port to a random port -- on the host machine's user port (port no 32,000+) docker run -p 8080:80 --> will redirect the container's port 80 to a port 8080 -- on the host machine's user port docker port <container-name> --> will list the port mapping information
  • 3. BASES DE DATOS y CONTENEDORES (dockers) – Facultad de Telemática – BDA 2019A – rherrera@ucol.mx 3 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DOCKER 101 - Tips para usar docker en Windows para configurar servers de BD +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --------------------------------------------------------- Para windows 10 home no funciona el más nuevo Docker Windows installer (533 MB) requiere Win10 PRO, en su lugar se puede usar el dockerToolbox (216MB) Se descarga el DockerTools Se instala con doble click Se corre desde el acceso directo, se abre una terminal y se empieza a configurar tarda como 3 minutos en configurar, al final queda un PROMPT y expone una IP que le asigno a una VM, pe.e 192.168.99.100 *** Se puede interactuar con docker en Windows, usando al menos 2 opciones: 1) Usando el Docker QuickstartTerminal, 2) Usando la interfaz gráfica GUI de Kitematic ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comandos básicos para docker --------------------------------------------- $ docker --version -- muestra la version del docker $ docker-machine ip -- saber la IP del docker $ docker-machine ls -- da un listado de la maquinas corriendo $ docker-machine url -- da el URL de acceso, p.e tcp://192.168.99.100:2376 -- da un listado de las imagenes que tiene descargadas localmente $ docker image ls --> es equivalente a $ docker images -- descarga una mini VM con una app que imprime el hola mundo $ docker run hello-world -- descarga una MV de ubuntu y abre su bash... con exit terminal $ docker run -it ubuntu bash -- descarga la ultima imagen del centos $ docker pull centos:latest -- corre la MV del centos y se abre en modo shell interactivo $ docker run -it centos:latest -- da un listado de los contenedores que estan corriendo localmente $ docker container ls $ docker ps -- es igual -- listado de los contenedores que han corrido al menos una vez $ docker container ls -a
  • 4. BASES DE DATOS y CONTENEDORES (dockers) – Facultad de Telemática – BDA 2019A – rherrera@ucol.mx 4 -- ******* BORRADO de IMAGENES y CONTAINERs *********************** -- CUIDADO: al borrar una imagen *** una imagen es diferente del -- container.. Si tuviera asociado un container se tendrá que forzar -- o borrar previamente el container $ docker rmi <imageName:imagenTag> -f -- -forzar -- *** borrar imagenes UNTAGGEDs <none>:<none> $ docker rmi $(docker images -q -f dangling=true) -- borrar un contenedor -- *** Aguas, pudiera estar corriendo como un servicio. $ docker rm <dockerName:Tag> -- ó tambien: $ docker rm <container_ID> -- terminar la sesion con el docker $ exit
  • 5. BASES DE DATOS y CONTENEDORES (dockers) – Facultad de Telemática – BDA 2019A – rherrera@ucol.mx 5 - - ******* Utilización de DOCKERS para BASES DE DATOS ****************** -- Instalar el docker para MYSQL -- ++++ Docker de MySQL https://hub.docker.com/_/mysql/ - - ********************************************************************* $ docker pull mysql -- descarga el ultimo docker para MySQL $ docker pull mysql:5.7 -- descarga la version 5.7, la 8.0 tiene detalles -- de compatibilidad en la autentificacion -- habria que usar "mysql_native_password" -- En la documentacion indica que así se lanza el server $ docker run --name nombreDelServer -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag -- de esta forma se podra usar el mySQL server como daemon, -- pero solo dentro del docker... -- **Se puede PUBLICAR(exponer) el puerto** para acceder desde la PC host -- se corre el server de MySQL, se le asigna una Tag y el pass del root $ docker run -p 3306:3306 --name mysql57 <-- se escribe todo de corrido -e MYSQL_ROOT_HOST=% -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7 $ docker run -p 3307:3307 --name server55 -e MYSQL_ROOT_HOST=% -e MYSQL_ROOT_PASSWORD=password -d mysql:5.5 -- --name asigna un nombre al contenedor. -- -e permite asignar valores a run time variables, -- como el pass del root con: 'MYSQL_ROOT_PASSWORD' y -- el HOST con 'MYSQL_ROOT_HOST' -- -d configura el contenedor como un daemon (corre en segundo plano) -- se checa si queda corriendo el mysql $ docker container ls -- Si quisieramos eliminar una instancia del docker se usa "rm". -- se puede usar para reconfigurar un docker $docker rm mysql57 <-- <servername> el nombre asignado con --name --checar los logs del mysql server <servername> $ docker logs mysql57 --checar datos finos de la configuracion del docker, como la IP interna $ docker inspect mysql57 -- regresa un jSON con todos los datos -- matar el proceso, reiniciar, iniciar, parar, el container del server $docker kill mysql57 $docker restart mysql57 $docker start mysql57 $docker stop mysql57
  • 6. BASES DE DATOS y CONTENEDORES (dockers) – Facultad de Telemática – BDA 2019A – rherrera@ucol.mx 6 -- +++ conexiones al MySQL server ------------------------------------------ -- conectarse dentro del docker como cliente al puerto default 3306 -- ** CUIDAR el nombre de la imagen que corresponda con su etiqueta, -- porque sino tratará de instanciar un "mysql:latest" -- --link <mysql57:mysql> --rm <mysql:5.7> -- servername:imagen imagen:tag $ docker run -it <-- para establecer session interactiva en la misma terminal --link mysql57:mysql <--enlazar al contenedor del server --rm mysql:5.7 <--borra el contenedor al terminar sesion sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"' -- version más corta sin incluir referencia al pass $ docker run -it --link mysql57:mysql --rm mysql:5.7 sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p' -- version aún más corta, usando directamente los valores e IP de la VM $ docker run -it --link mysql57:mysql --rm mysql:5.7 sh -c 'exec mysql -h192.168.99.100 -uroot -p' -- Otra forma de lanzar el cliente de mysql (mysql.exe) -- es sin instanciar un nuevo Docker, utilizando el mismo container -- del server que ya está corriendo … con docker EXEC -- $docker exec -it <instancia> <comando> $ docker exec -it mysql57 mysql -uroot -ppassword -P3306 -- se puede omitir el -h y asumirá localhost, se puede omitir también el -P -- ++++++++ Para conexiones desde la maquina Host +++++++++++++++++++++++++ -- 1) obtener IP de VM: $docker-machine ip -> (192.168.99.100) -- 2) Haber instanciado el server con el puerto expuesto -- 3) conectar con consola cliente o workbench >mysql -h192.168.99.100 -P3306 -uroot -p
  • 7. BASES DE DATOS y CONTENEDORES (dockers) – Facultad de Telemática – BDA 2019A – rherrera@ucol.mx 7 - - ******** INSTALAR el docker para PostgreSQL server ************* -- https://hub.docker.com/_/postgres/ - - ***************************************************************** -- descargar docker de PostgreSQL server $docker pull postgres:9.5 -- con el tag “9.5” se indica la version 9.5, si no será 'latest' -- correr la imagen del Postgre como server (daemon), $ docker run -p 5432:5432 --name pgserver95 -e POSTGRES_PASSWORD=password -d postgres:9.5 -- -p 5432:5432 se publica el puerto interno del docker como publico -- --name , -e -d similares a la ejecucion del MySQL -- +++ conexiones al servidor del posgreSQL +++++++++++++++++++++++++++++++++ -- una vez expuesto el puerto, se podria conectar desde el pgAdmin u otros -- conectarse via terminal con el cliente "psql.exe" $ docker run -it --link pgserver95:postgres --rm postgres:9.5 psql -h postgres -U postgres -- cuidar el nombre de la imagen que corresponda con su respectiva etiqueta, -- porque sino tratará de instanciar un "postgres:latest" -- --link <pgserver95:postgres> --rm <postgres:9.5> -- servername:imagen imagen:tag /* comandos basicos para terminal "psql.exe": ? ayuda sobre comandos pgsql l lista las databases dt lista las tablas c conecta a DB q salir */ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++