
Conceptos de Docker
Imagen
Es la que contiene las dependencias, bibliotecas, etc. Básicamente es una plantilla o (modelo) que solo tiene lo necesario para ejecutar la aplicación.
Contenedor
Son instancias o (objetos como en POO), el cual crea la instancia de una imagen.
Dockerfile
Es la configuración para la creación de la imagen, acá se define que va a llevar, las instrucciones, dependencias, y configuración del entorno.
Red
La red virtual es la que permite la comunicación entre contenedores, esto es usado en aplicaciones grandes que van a tener varios servicios, es decir se crear varios contenedores de los cuales lleva el micro-servició que va a realizar (backend o la lógica del negocio).
Volumen
Es donde se guarda los datos generados y usados por los contenedores.
Notas:
docker hub
Comandos de Docker
Contenedores
Crear Contenedor
Alias (nuevo nombre)
Se utiliza para cambiar el nombre en NAMES y no usar el CONTAINER ID.
Listar contenedores
Con este comando ves todos los contenedores.
Y con este ves los contenedores que están corriendo.
Borrar contenedor
Con este comando borras el contenedor con el respectivo nombre.
Con este comando borras todos los contenedores.
Correr contenedor
En este caso, se está corriendo un contenedor que tiene Ubuntu.
El "-d" evita entrar en modo interactivo (entrar al contenedor o línea de comandos). Para entrar al modo interactivo, usa "-it".
Detener contenedor
Para detener un contenedor en windows es con.
Y en Linux puedes obtener el ID del proceso con
Exponer contenedor
Ahora vamos a exponer un puerto de un contenedor usando la imagen nginx. Los números son los puertos: el de la izquierda es el puerto de la máquina anfitriona y el de la derecha es el puerto del contenedor.
Datos
Persistir datos (Bind mount)
Esta forma de persistir datos es la menos recomendable ya que tiene acceso directo a la carpeta.
Crear volumen
La creación de volúmenes es la más común y segura. Para crear un volumen, se utiliza el siguiente comando.
Ejemplo práctico: en "dst", se especifica el directorio interno del contenedor donde se guardarán los datos.
Insertar archivos
Para insertar archivos, es importante que el contenedor esté corriendo. Puedes crear un archivo y luego pegarlo dentro del contenedor.
Extraer archivos
Ahora para extraer archivos haces lo mismo de forma opuesta con.
Imágenes
Listar imagenes
Descargar imagen
La imagen se descarga de Docker Hub
Crear imagen
Para crear imagen se crea un dockerfile
Construir imagen
Ahora ya que tienes el dokerfile, vas a construir la imagen con.
El "." se refiere al directorio actual
Borrar imagen
Para borrar la imagen es importante que lleve el tag.
Cambiar nombre del tag
Cambia el nombre a uno personal y poder publicarlo en docker hub.
Publicar imagen
Primero haces.
Y despues publicas la imagen con.
Historial de una imagen
Ejemplo Practico
Clona repositorio
Modifica el dockerfile a
Consturye la imagen
Y luego corre la imagen
El "--rm" elimina el contenedor cuando se detenga
Redes
Listar redes
Crear una red
Este parametro "--attachable" permite que cualquier contenedor se conecte a esta red
Conectarse a una red
Crea dos contenedores uno con mongo y otro con node; el de mongo lo conectas.
Y el contenedor de node lo conectas de esta manera.
"env" es una variable de entorno.
Docker compose
Esta herramienta nos ayuda a hacer todo de forma más sencilla de forma declarativa, es importante la indentacion como en Python. Ahora crea un archivo "docker-compose.yml".
Ahora ejecutas esto. Aclaracion mrnode es la "imagen" que yo cree previamente.
Para entrar en modo interactivo ejecutas.
"app" es el nombre del servicio de la seccion de "services" en el archivo docker compose. Ahora para destruir todo lo haces con.
Construir imagen con docker-compose
Ejemplo con mongoDB.
Y para construir lo hace con.
Entorno personal con docker-compose
Cuando necesites un entorno personal, usted puede crear el archivo "docker-compose.override.yml", el archivo “docker-compose.yml” lo deja como viene y en “docker-compose.override.yml” modifica lo que necesita.