Skip to content

Instantly share code, notes, and snippets.

@codewithleader
Last active March 23, 2024 04:55
Show Gist options
  • Save codewithleader/4fb24e08d623858e329c625932900947 to your computer and use it in GitHub Desktop.
Save codewithleader/4fb24e08d623858e329c625932900947 to your computer and use it in GitHub Desktop.
Docker Todos los comandos

Docker:

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.

Containers:

Los contenedores son entornos aislados que contienen todo lo necesario para ejecutar una aplicación, incluidas las dependencias y configuraciones.

Dockerfile:

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.

docker-compose.yml:

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.

Comandos Básicos

  • 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}}"
  • 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.
  • 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
  • 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.

Administración de Imágenes

  • docker image pull <imagen> Descarga una imagen desde un registro.

  • docker image ls o docker 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.

Administración de Contenedores

  • docker container ls Lista contenedores en ejecución.

    • Parámetros:
      • -a: incluye los detenidos.

Mostrar containers inactivos:

  • 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.

Ejecutar comandos dentro de un container

  • 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.

Ejecutar comandos MySQL en container de Docker

  • docker exec -it mi_contenedor_mysql mysql -u usuario -p: Enter password.

Limpiar la pantalla sin salid de MySQL

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.

Redes en Docker

  • 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.

Volúmenes en Docker

  • 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

  • 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 el compose 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
  • 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.

Comandos de Inspección y Gestión

  • 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.)

Limpieza general

  • 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.
  • 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment