Introducción a Docker

Docker es una plataforma de código abierto que facilita la creación, implementación y administración de aplicaciones en contenedores. Los contenedores permiten empaquetar una aplicación y todas sus dependencias en una única unidad portátil, lo que garantiza que la aplicación se ejecute de la misma manera en cualquier entorno.

Contenedores vs Máquinas virtuales

Contenedores:

  • Los contenedores usan el kernel del sistema operativo host, solo se virtualiza el sistema operativo
  • Usa pocos recursos del equipo host
  • Solo podemos crear contenedores con kernel basado en GNU/LINUX
  • Al eliminarlo se borran todos los archivos que contenia
  • Para persistir data usamos los Volúmenes
  • Capacidades avanzadas de redes LV2, LV3

Máquinas Virtuales:

  • Se virtualiza el hardware
  • Se usan hipervisores (VMware, Virtual Box, KVM, Gnome boxes, Microsoft Virtual PC)
  • Son pesadas (ocupan mucho espacio)
  • Reservan el hardware del equipo host (el host no puede utilizarlos)
  • Tipos de redes: NAT, BRIDGE

Instalación de Docker

  1. Instalar Docker Desktop: Visita el sitio web oficial de Docker Desktop (https://www.docker.com/products/docker-desktop/) y sigue las instrucciones de instalación para tu sistema operativo.

Uso básico de Docker

Ejecución de Contenedores

Ejecutar un contenedor:

docker run IMAGE:tag
docker run nginx
docker run node:latest

Ejecutar un contenedor y darle un nombre:

docker run --name CONTAINER IMAGE
docker run --name webserver nginx

Mapear un puerto:

docker run -p HOSTPORT: CONTAINERPORT IMAGE
docker run -p 8080:80 nginx

Mapear todos los puertos:

docker run -P IMAGE
docker run -P nginx

Ejecutar un contenedor en background:

docker run -d IMAGE docker run -d nginx

Asignar un hostname:

docker run --hostname HOSTNAME IMAGE
docker run --hostname srv nginx

Mapear un directorio local dentro del contenedor:

docker run -v HOSTDIR: TARGETDIR IMAGE
docker run -v ~/mydir:/usr/share/nginx/html nginx

Definir Variables de Entorno:

docker run -e ENV_VAR=value IMAGE
docker run -e POSTGRES_PASSWORD=passsword postgres

Ejecutar un contenedor interactivo:

docker run -it ubuntu

Detener un contenedor en ejecución:

docker stop <ID del contenedor o nombre>

Ejecutar un contenedor detenido:

docker start <ID del contenedor o nombre>

Ejecutar una Terminal dentro de un contenedor:

docker exec -it CONTAINER EXECUTABLE
docker exec -it webserver bash

Administración de Contenedores

Eliminar un contenedor:

docker rm <ID del contenedor o nombre>

Listar contenedores en ejecución:

docker ps

Listar todos los contenedores: (incluso los detenidos),

docker ps -a

Descargar una imagen:

docker pull IMAGE:TAG
docker pull ubuntu
docker pull ubuntu:18.04

Subir una imagen a un repositorio:

docker push IMAGE
docker push myimage:1.0

Eliminar una imagen:

docker rmi IMAGE

Mostrar una lista de todas las imágenes:

docker images

Eliminar imágenes:

docker image prune

Eliminar todas las imágenes no utilizadas:

docker image prune -a

Construir una imagen desde un Dockerfile:

docker build DIRECTORIO 
docker build .

Etiquetar una imagen:

docker tag IMAGEN NUEVA_IMAGEN
docker tag ubuntu ubuntu:18.04

Construir y etiquetar una imagen desde un Dockerfile:

docker build -t IMAGEN DIRECTORIO 
docker build -t myimage .

Administración de Redes

Listar todas las redes:

docker network ls

Crear una red Bridge (default driver):

docker network create NETWORK
docker network create atitlan

Eliminar una red:

docker network rm NETWORK 
docker network rm atitlan

Obtener información detallada de una red:

docker network inspect NETWORK
docker network inspect atitlan

Mostrar los puertos mapeados de un contenedor:

docker port CONTAINER
docker port web

Administración de Volúmenes

Listar todos los volúmenes:

docker volume ls

Crear un volumen:

docker volume create VOLUME
docker volume create fuego

Eliminar un volumen:

docker volume rm VOLUME
docker volume rm fuego

Obtener información detallada de un volumen:

docker volume inspect VOLUME
docker volume inspect fuego

Remover todos los volúmenes sin usar: 

docker volume prune

Docker Cheat Sheet PDF:

Leave a Comment