Es una plataforma de virtualización a nivel de sistema operativo que permite empaquetar, distribuir y ejecutar aplicaciones en contenedores. Docker se utiliza principalmente para crear y administrar entornos de desarrollo y producción.
Los contenedores son entornos aislados que contienen todo lo necesario para ejecutar una aplicación, incluidas las dependencias y configuraciones.
Un Dockerfile es un archivo de texto que contiene instrucciones para construir una imagen Docker. Define cómo se crea una imagen desde una base y cómo se instalan las dependencias y se configuran los elementos en esa imagen.
Un archivo docker-compose.yml es utilizado para definir y gestionar múltiples servicios, redes y volúmenes en un entorno de Docker. Puedes usarlo para orquestar contenedores basados en las imágenes definidas en los Dockerfiles o en imagenes de hub.docker.com
- Servicio: Un servicio en docker-compose.yml es una definición de cómo se ejecuta un contenedor específico. Aquí puedes configurar la imagen, puertos expuestos, variables de entorno, volúmenes compartidos, enlaces entre contenedores y más.
- Volume: Un volume es un mecanismo para persistir y compartir datos entre contenedores y el host. Puedes usar volúmenes para mantener datos que deben sobrevivir a la vida del contenedor.
- Red: Una NETWORK en Docker es un espacio aislado en el cual los contenedores pueden comunicarse entre sí. Puedes definir redes personalizadas para aislar y conectar contenedores.
-
docker stats
: Muestra uso de CPU, RAM y otros datos de consumo de cada container activo. El formato por defecto es 'table' (docker stats --format 'table') pero tambien se puede cambiar a 'json' (docker stats --format 'json')- Para solo mostrar info de CPU y RAM:
docker stats --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}"
- Para solo mostrar info de CPU y RAM:
-
docker cp <nombre o ID del contenedor>:/etc/apache2/sites-available/000-default.conf .
: Copiar un archivo del container a tu directorio. -
docker pull <imagen>
Descarga una imagen de Docker desde un registro (como Docker Hub) a tu sistema local. -
docker run <opciones> <imagen>
Crea un contenedor a partir de una imagen y lo ejecuta. -
docker ps
Muestra una lista de contenedores en ejecución.- Parámetros:
-a
: Muestra todos los contenedores tanto activos como detenidos.-q
: Muestra solo los IDs de los contenedores en vez de toda la información detallada.-a -f status=exited
: Muestra solo los contenedores detenido (Exited)-a -q -f status=exited
: Muestra solo los IDs de contenedores detenido (Exited)--no-trunc
: Para no cortar el texto de salida, muestra todo con detalles. A veces el texto es muy largo y no cabe en la columna asi que docker corta el texto. Si queremos saber toda la info usamos --no-trunc.
- Parámetros:
-
docker images
Lista las imágenes de Docker disponibles en tu sistema. -
docker rm <contenedor>
Elimina uno o más contenedores. -
docker rmi <imagen>
: Elimina una o más imágenes.- Por nombre y tag:
docker rmi uptask:1.0
- Por Imagen Id:
docker rmi de19be19cd42
- Es tambien posible solo con los 3 primeros digitos de la ImagenID:
docker rmi de1
- Es tambien posible solo con los 3 primeros digitos de la ImagenID:
- Por nombre y tag:
-
docker stop <contenedor>
Detiene un contenedor en ejecución. -
docker stop $(docker ps -q)
Detiene todos los contenedores activos. Este comando utiliza una subshell para obtener la lista de IDs de todos los contenedores en ejecución a través del comando docker ps -q y luego pasa esos IDs al comando docker stop, que detendrá cada uno de esos contenedores. la opción -q es un atajo para indicarle a Docker que solo queremos que se muestren los IDs de los contenedores en lugar de toda la información detallada. -
docker start <contenedor>
Inicia un contenedor detenido. -
docker restart <contenedor>
Reinicia un contenedor en ejecución. -
docker logs <contenedor>
Muestra los registros de salida de un contenedor. -
docker exec <opciones> <contenedor> <comando>
Ejecuta un comando dentro de un contenedor en ejecución. -
docker build <opciones> <ruta>
Construye una imagen de Docker a partir de un archivo Dockerfile y un contexto.
-
docker image pull <imagen>
Descarga una imagen desde un registro. -
docker image ls
odocker images
: Lista imágenes en tu sistema. -
docker image rm <imagen>
Elimina una o más imágenes. -
docker image prune
Elimina imágenes no utilizadas.
-
docker container ls
Lista contenedores en ejecución.- Parámetros:
-a
: incluye los detenidos.
- Parámetros:
-
docker ps -a -f "status=exited"
: --filter se abrevia con solo -f -
docker container rm <contenedor>
Elimina uno o más contenedores. -
docker container prune
Elimina contenedores detenidos. -
docker container inspect <contenedor>
Muestra información detallada sobre un contenedor. -
docker container logs <contenedor>
Muestra los registros de un contenedor.
-
docker container exec <opciones> <contenedor> <comando>
Ejecuta un comando dentro de un contenedor en ejecución.-
Ejemplo:
docker container exec -it b8b70da89ea1 /bin/bash
-
El comando
docker container exec
te permite ejecutar comandos dentro del contenedor, y en este caso, estás ejecutando una instancia interactiva del intérprete de comandos Bash dentro del contenedor especificado. -
Contenedor Docker: Cuando se crea un contenedor, puede tener su propio sistema de archivos independiente. En este sistema de archivos del contenedor, las ubicaciones de los archivos y directorios son específicas para ese contenedor y no están relacionadas con el sistema de archivos del host.
-
Ubicación del Intérprete de Comandos en el Contenedor: La ruta
/bin/bash
se refiere al intérprete de comandos Bash ubicado dentro del sistema de archivos del contenedor. En los sistemas Unix-like, el directorio /bin es donde se almacenan los archivos ejecutables esenciales del sistema. -
Ejecución del Comando: Al ejecutar el comando
docker container exec -it b8b70da89ea1 /bin/bash
, estás indicando a Docker que quieras ejecutar una instancia del intérprete de comandos Bash dentro del contenedor con ID b8b70da89ea1. -
El comando
docker container exec -it b8b70da89ea1 /bin/bash
se utiliza para ejecutar un shell interactivo dentro de un contenedor Docker específico. Veamos el significado de las opciones -it:-
La opción
-i
(abreviatura de "interactive") indica que quieres tener una sesión interactiva con el contenedor. Esto significa que podrás enviar comandos al shell del contenedor y recibir respuestas en tiempo real. -
La opción
-t
(abreviatura de "tty") se utiliza para asignar un pseudo terminal (TTY) en la sesión interactiva. Esto permite que los comandos que ingreses y las respuestas del contenedor se muestren de manera adecuada, como si estuvieras interactuando con un terminal normal. -
Al usar ambas opciones
-i
y-t
, puedes acceder a una sesión de terminal dentro del contenedor de manera interactiva. En este caso, el comando ejecuta /bin/bash, que es el intérprete de comandos Bash, dentro del contenedor con ID b8b70da89ea1. Esto te proporciona un shell dentro del contenedor para ejecutar comandos y explorar su entorno.
-
-
-
docker exec -it mi_contenedor_mysql mysql -u usuario -p
: Enter password.
Dentro del monitor de MariaDB, puedes usar un comando específico de MariaDB llamado \!
. Este comando permite ejecutar comandos del sistema operativo sin salir del monitor de MariaDB.
Para limpiar la pantalla, puedes usar el comando \! clear
y presiona Enter.
-
docker network ls
Lista las redes de Docker en tu sistema. -
docker network create <nombre>
Crea una nueva red de Docker. -
docker network connect <red> <contenedor>
Conecta un contenedor a una red. -
docker network disconnect <red> <contenedor>
Desconecta un contenedor de una red.
-
docker volume ls
Lista los volúmenes de Docker en tu sistema. -
docker volume create <nombre>
Crea un nuevo volumen de Docker. -
docker volume inspect <volumen>
Muestra información detallada sobre un volumen.
-
docker compose up
Inicia contenedores definidos en un archivo docker-compose.yml.- Parámetros:
-d
(detached mode): Se utiliza para indicar que deseas ejecutar los contenedores en segundo plano, lo que en inglés se llama "detached mode".-p my_proyect_name
: Si deseas personalizar elcompose stack
en lugar de utilizar el nombre de la carpeta del proyecto por defecto, usa esta bandera '-p' seguido de un nombre personalizado para el proyecto. Ejemplo:docker compose -p my_proyect_name up -d
- Parámetros:
-
docker compose down
Detiene y elimina contenedores definidos en un archivo docker-compose.yml. -
docker compose down --volumes --rmi all
Detendrá todos los contenedores definidos en el archivo docker-compose.yml. Eliminará los contenedores detenidos. Eliminará las redes definidas en el archivo docker-compose.yml. Eliminará los volúmenes definidos en el archivo docker-compose.yml. Eliminará todas las imágenes que fueron creadas por el archivo docker-compose.yml. -
docker compose logs
Muestra los registros de contenedores definidos en un archivo docker-compose.yml.
-
docker info
Muestra información sobre la instalación de Docker. -
docker version
Muestra la versión de Docker que está instalada. -
docker inspect <objeto>
Muestra información detallada sobre un objeto Docker (imagen, contenedor, volumen, red, etc.)
-
docker system prune
: Limpia recursos no utilizados, como imágenes no utilizadas, contenedores detenidos, redes no utilizadas y volúmenes sin usar. Puede liberar espacio en disco y mantener el entorno de Docker más limpio.- Parametros adicionales:
--all
: Esta variante del comando docker system prune elimina más tipos de recursos, incluyendo networks, volumes y build cache. Es más agresiva en la limpieza.
- Parametros adicionales:
-
docker builder prune
: Limpia componentes de construcción, incluyendo imágenes intermedias y caches de construcción, liberando espacio y manteniendo un entorno más ordenado.