Obtener y ejecutar contenedores a partir de imágenes
Marcelo Denis
Ing. Informático
@mdrm016
mdrm016@gmail.com
- Docker Run
- Docker Images
- Ejercicios
Estructura de Docker
Hello World
El Modo Iterativo
Estados de un Contenedor
El contenedor se creo sin errores pero no esta corriendo.
Este estado es útil para cuando queremos crear un contenedor pero todavía no utilizarlo.
Estados de un Contenedor
El contenedor se esta reiniciando.
Este estado puede darse en el caso que desde un comando reiniciemos el contenedor o bien por un error relacionado a código en el mismo.
Estados de un Contenedor
Nuestro contenedor esta creado y corriendo sin ningún problema.
Estados de un Contenedor
El contenedor se esta removiendo pero todavía sigue creado, en este momento ya no podemos acceder al mismo.
Estados de un Contenedor
El contenedor esta creado pero pausado.
En este estado podemos acceder al contenedor pero su código no está en ejecución.
Estados de un Contenedor
Podemos llegar a este estado porque el container termino de ejecutar su código de forma correcta o bien porque se encontró con algún problema durante su ejecución.
Si su “status code” es 0 quiere decir que el container termino sin problemas, cualquier otro numero distinto de 0 implica que el container no termino su ejecución de forma correcta.
Estados de un Contenedor
Es el estado terminal del container.
Usualmente se da cuando el container pierde acceso de escritura a archivos necesarios para funcionar.
Ejecutar un Main Process
Nombre del contenedor
Parámetro para ejecutar en segundo plano
Nombre de la imagen
Comando del main process
Estado del Contenedor
Parar un Contenedor
En windows
En linux
Otros Comandos para Administrar un Contenedor
Exponer Contenedores
Puerto del servidor anfitrión
Puerto del contenedor
Docker images
Una imagen es una plantilla creada a partir de una serie de instrucciones para luego crear containers en base a esta.
Imágenes Oficiales
La gran mayoría de las aplicaciones Open Source populares tiene una Imagen Oficial en el Docker Hub.
Dockerfile
Nos permite crear imágenes personalizadas usando un fichero de configuración llamado Dockerfile.
Imágenes Personalizadas
En el caso de no encontrar una imagen específica en el Docker Hub, debemos crearla nosotros.
FROM centos:centos7.9.2009 RUN yum install httpd -y
Centos con Apache
Dockerfile
Imágenes Personalizadas
FROM ubuntu RUN apt-get update
RUN apt-get install -y python3
Ubuntu con Python
Dockerfile
RUN
Nos permite ejecutar comandos en contenedores intermedios para realizar configuraciones, instalaciones,
etc. dentro de la imagen base.
RUN echo 1.0 >> /etc/version && apt-get install -y git \
&& apt-get install -y iputils-pingCMD
Esta directiva nos permite ejecutar el main process al arrancar el contenedor.
CMD echo "Este es mi contenedor"CMD ["echo", "Este es mi contenedor"]Ejecuta con la shell -> /bin/sh
Ejecuta con Exec
ENTRYPOINT
Nos permite ejecutar un comado siempre al iniciar un contenedor.
ENTRYPOINT ["/bin/bash"]ENTRYPOINT ["ls"]ENTRYPOINT ["/var/app/run.sh"]WORKDIR
Determina el directorio de trabajo en un determinando momento durante la creación de la imagen. Permite ejecutar comandos sin tener que usar la ruta completa.
RUN mkdir /datos WORKDIR /datos
WORKDIR /home/miAppCOPY
Nos permite copiar el contenido del un directorio de nuestro host a algún directorio del contenedor.
WORKDIR /home/miApp
COPY /develop/app/index.html .
COPY /develop/log.txt /datosFichero del Host
Directorio del contenedor
ADD
Nos permite copiar el directorio de nuestro host a algún directorio del contenedor.
WORKDIR /home/miApp
ADD /develop/app .
COPY /develop /datosDirectorio del Host
Directorio del contenedor
ENV
Esta directiva permite configurar variables de entorno para el contenedor.
ENV DIR=/datos
RUN mkdir $DIR
ENV DB_NAME=app DB_USER=app123 DB_PASS=987654321
ARG
Esta directiva nos permite pasar una variable al momento de construir una imagen.
ARG DIR
RUN mkdir $DIR
docker build -t image:0.0.1 --build-arg DIR=data .
Ejecutar 3 contenedores que corresponde a partes de una aplicación web.
https://github.com/mdrm016/bootcamp-docker-ejercicios.git
1. Levantar una BD en postgres
2. Levantar un API REST [Backend]
3. Levantar el Frontend
- Estructura de docker
- Estados de un contenedor
- Tipos de imágenes
- Instrucciones de un Dockerfile
- Ejercicios