Comandos básicos de la CLI de Docker: Una guía para principiantes

Docker CLI commands are vital for managing containerized applications. This guide covers essential commands like `docker run`, `docker ps`, and `docker build` to streamline your development workflow.
Índice
essential-docker-cli-commands-a-beginners-guide-2

Docker CLI: Essential Commands for Beginners

Docker is a powerful platform that enables developers to automate the deployment of applications inside lightweight containers. Containers encapsulate an application and its dependencies, ensuring that it runs seamlessly across different environments. While Docker provides a graphical user interface (GUI) in some instances, the command line interface (CLI) is the most efficient and preferred way to interact with Docker. In this article, we’ll dive deep into essential Docker CLI commands, providing a comprehensive guide for beginners aiming to harness the power of Docker.

Docker es una plataforma de código abierto que permite a los desarrolladores crear, implementar y ejecutar aplicaciones en contenedores. Los contenedores son entornos aislados que contienen todo lo necesario para que una aplicación se ejecute, incluyendo el código, las bibliotecas del sistema, las herramientas y las dependencias. Esto significa que las aplicaciones pueden ejecutarse de manera consistente en cualquier entorno, ya sea en un servidor local, en la nube o en un dispositivo móvil.Docker utiliza la tecnología de contenedores de Linux, que permite que múltiples contenedores se ejecuten en una sola máquina host. Cada contenedor comparte el kernel del sistema operativo host, pero tiene su propio espacio de usuario y sistema de archivos. Esto hace que los contenedores sean mucho más ligeros y rápidos que las máquinas virtuales tradicionales, que requieren un sistema operativo completo para cada instancia.Docker también proporciona una serie de herramientas y servicios para facilitar el desarrollo y la implementación de aplicaciones en contenedores. Estos incluyen:- Docker Hub: Un repositorio de imágenes de contenedores que los desarrolladores pueden usar como base para sus propias aplicaciones.- Docker Compose: Una herramienta para definir y ejecutar aplicaciones de múltiples contenedores.- Docker Swarm: Un orquestador de contenedores que permite a los desarrolladores administrar y escalar aplicaciones en contenedores en múltiples hosts.- Docker Machine: Una herramienta para crear y administrar máquinas host de Docker en diferentes plataformas.En resumen, Docker es una plataforma de contenedores que permite a los desarrolladores crear, implementar y ejecutar aplicaciones de manera consistente en cualquier entorno. Proporciona una serie de herramientas y servicios para facilitar el desarrollo y la implementación de aplicaciones en contenedores, lo que lo convierte en una opción popular para el desarrollo de aplicaciones modernas.

Antes de profundizar en los comandos de la interfaz de línea de comandos (CLI), repasemos brevemente qué es Docker. Docker es una plataforma de contenedorización de código abierto que permite a los desarrolladores empaquetar aplicaciones en contenedores. Un contenedor incluye el código de la aplicación, el entorno de ejecución, las bibliotecas y las herramientas del sistema necesarias para ejecutar la aplicación. Esta aislación permite a los desarrolladores estar seguros de que su aplicación se comportará de la misma manera sin importar dónde se ejecute, ya sea en la máquina de un desarrollador, un servidor de staging o en producción.

Instalando Docker

Before you can start using Docker CLI commands, you need to install Docker on your machine. Docker provides detailed instructions for various operating systems—Windows, macOS, and Linux. The installation process typically involves downloading Docker Desktop for Windows and macOS or installing Docker Engine for Linux distributions.

Installation Steps

  1. Descargar Docker: Visita el Docker website and download the appropriate version for your operating system.

  2. Install Docker: Follow the installation instructions specific to your OS. On Linux, you might need to configure the Docker repository and install Docker via your package manager.

  3. Start Docker: Asegúrate de que Docker esté ejecutándose en tu máquina. En Docker Desktop, es posible que veas un icono en la bandeja del sistema que indica que Docker está activo.

  4. Test InstallationAbre tu terminal y ejecuta el siguiente comando:

    docker --version

    This should return the installed version of Docker if everything was set up correctly.

Docker CLI Basics

La interfaz de línea de comandos (CLI) de Docker permite a los usuarios interactuar con el demonio de Docker y administrar contenedores, imágenes, redes y volúmenes de Docker. La sintaxis básica de cualquier comando de Docker es:``` docker [opciones] [comando] [argumentos] ```Donde: - `docker` es el comando principal para invocar la CLI de Docker. - `[opciones]` son parámetros opcionales que modifican el comportamiento del comando. - `[comando]` es la acción específica que se quiere realizar, como `run`, `ps`, `images`, etc. - `[argumentos]` son parámetros adicionales requeridos por el comando, como nombres de contenedores, imágenes, etc.Por ejemplo, para ejecutar un contenedor de Ubuntu:``` docker run -it ubuntu bash ```Esto iniciará un contenedor interactivo con Ubuntu y abrirá una terminal bash dentro del contenedor.Algunos comandos comunes de Docker incluyen:- `docker run` - Ejecuta un contenedor a partir de una imagen. - `docker ps` - Lista los contenedores en ejecución. - `docker images` - Lista las imágenes descargadas. - `docker build` - Construye una imagen a partir de un Dockerfile. - `docker pull` - Descarga una imagen desde un registro. - `docker push` - Sube una imagen a un registro. - `docker stop` - Detiene un contenedor en ejecución. - `docker rm` - Elimina un contenedor. - `docker rmi` - Elimina una imagen.La CLI de Docker proporciona una amplia gama de comandos y opciones para gestionar eficientemente los recursos de Docker en un sistema.

docker [OPCIONES] COMANDO [ARG...]

Para familiarizarte con los comandos de Docker, siempre puedes empezar ejecutando:

docker help

Este comando le proporcionará una visión general breve de los comandos disponibles.

Comandos esenciales de la CLI de DockerDocker es una plataforma de contenedorización que permite empaquetar aplicaciones y sus dependencias en contenedores ligeros y portátiles. La interfaz de línea de comandos (CLI) de Docker proporciona una amplia gama de comandos para gestionar contenedores, imágenes, volúmenes y redes. A continuación, se presentan algunos de los comandos esenciales de la CLI de Docker:1. docker run: Este comando se utiliza para crear y ejecutar un contenedor a partir de una imagen. Por ejemplo: ``` docker run -d -p 80:80 nginx ``` Este comando crea y ejecuta un contenedor basado en la imagen de Nginx, exponiendo el puerto 80 del contenedor en el puerto 80 de la máquina host.2. docker ps: Este comando muestra una lista de los contenedores en ejecución. Por ejemplo: ``` docker ps ``` Este comando muestra información sobre los contenedores en ejecución, como el ID del contenedor, la imagen utilizada, el estado y los puertos expuestos.3. docker stop: Este comando se utiliza para detener un contenedor en ejecución. Por ejemplo: ``` docker stop ``` Este comando detiene el contenedor con el ID especificado.4. docker rm: Este comando se utiliza para eliminar un contenedor. Por ejemplo: ``` docker rm ``` Este comando elimina el contenedor con el ID especificado.5. docker images: Este comando muestra una lista de las imágenes disponibles en el sistema. Por ejemplo: ``` docker images ``` Este comando muestra información sobre las imágenes, como el ID de la imagen, el repositorio, la etiqueta y el tamaño.6. docker pull: Este comando se utiliza para descargar una imagen desde un registro de Docker. Por ejemplo: ``` docker pull nginx ``` Este comando descarga la última versión de la imagen de Nginx desde el registro de Docker.7. docker build: Este comando se utiliza para construir una imagen a partir de un Dockerfile. Por ejemplo: ``` docker build -t myapp . ``` Este comando construye una imagen llamada "myapp" a partir del Dockerfile en el directorio actual.8. docker exec: Este comando se utiliza para ejecutar un comando dentro de un contenedor en ejecución. Por ejemplo: ``` docker exec -it /bin/bash ``` Este comando abre una sesión interactiva de bash dentro del contenedor con el ID especificado.9. docker logs: Este comando se utiliza para ver los registros de un contenedor. Por ejemplo: ``` docker logs ``` Este comando muestra los registros del contenedor con el ID especificado.10. docker volume: Este comando se utiliza para gestionar volúmenes en Docker. Por ejemplo: ``` docker volume create myvolume ``` Este comando crea un volumen llamado "myvolume".Estos son solo algunos de los comandos esenciales de la CLI de Docker. Docker proporciona una amplia gama de comandos para gestionar contenedores, imágenes, volúmenes y redes, lo que permite a los desarrolladores y administradores de sistemas trabajar de manera eficiente con aplicaciones contenerizadas.

Imágenes de Docker

Images are the blueprints for containers. They contain everything needed to run applications, including the code, libraries, and runtime. The following commands are fundamental when working with Docker images.

a. Listing Images

Para listar todas las imágenes en tu sistema local, utiliza:

imágenes de docker

Este comando muestra una lista de imágenes, incluyendo su repositorio, etiqueta, ID de imagen, fecha de creación y tamaño.

b. Extracción de una imagen

Para descargar una imagen de Docker desde Docker Hub, utiliza:

docker pull [IMAGE:TAG]

Por ejemplo:

docker pull nginx:latest

Este comando obtiene la última versión de la imagen de Nginx.

c. Building an Image

Puedes crear tu propia imagen de Docker utilizando un Dockerfile. Utiliza el siguiente comando para construir una imagen:

docker build -t [NOMBRE_IMAGEN:ETIQUETA] [RUTA_A_DOCKERFILE]

Ejemplo:

docker build -t myapp:1.0 .

This command builds an image named myapp with the tag 1.0 utilizando el Dockerfile en el directorio actual.

d. Eliminar una imagen

Para eliminar una imagen, use:

docker rmi [ID_IMAGEN]

Si una imagen está siendo utilizada por un contenedor, es posible que primero necesites eliminar el contenedor o utilizar el comando docker rmi -f para forzar la eliminación de la imagen. -f marca para forzar la eliminación.

2. Contenedores Docker

Los contenedores son instancias de imágenes de Docker que ejecutan aplicaciones. Puede crear, iniciar, detener y gestionar contenedores utilizando varios comandos de la CLI de Docker.

Listar Contenedores

Para listar los contenedores en ejecución, use:

docker ps

To see all containers (including stopped ones), run:

docker ps -a

b. Running a Container

To create and start a new container from an image, use:

docker run [OPTIONS] [IMAGE:TAG]

Por ejemplo, para ejecutar un nuevo contenedor Nginx:

docker run -d -p 80:80 nginx:latest

El - La opción ejecuta el contenedor en modo desatendido, y - maps port 80 of the container to port 80 of the host.

c. Stopping a Container

Para detener un contenedor en ejecución, utiliza:

docker stop [CONTAINER_ID]

También puedes usar el nombre del contenedor como identificador.

d. Eliminar un contenedorPara eliminar un contenedor, primero debe detenerse. Una vez detenido, puede eliminarse con el comando `docker rm`. Por ejemplo, para eliminar el contenedor llamado "webserver", ejecutaría:``` docker rm webserver ```Si el contenedor está en ejecución, deberá detenerlo primero con `docker stop` y luego eliminarlo con `docker rm`. También puede usar la opción `-f` para forzar la eliminación de un contenedor en ejecución:``` docker rm -f webserver ```Tenga en cuenta que eliminar un contenedor también eliminará todos los datos que no estén almacenados en volúmenes persistentes. Asegúrese de hacer una copia de seguridad de los datos importantes antes de eliminar un contenedor.

Para eliminar un contenedor detenido, utiliza:

docker rm [ID_DEL_CONTENEDOR]

For removing all stopped containers, you can run:

docker container podar

e. Visualización de registrosPara ver los registros de un contenedor, utilice el comando `docker logs`. Por ejemplo, para ver los registros del contenedor `ubuntu_bash` que creamos anteriormente, ejecute:```bash $ docker logs ubuntu_bash ```Este comando mostrará los registros del contenedor, incluyendo cualquier salida que se haya generado durante su ejecución.

Para ver los registros de un contenedor, use:

docker logs [ID_DEL_CONTENEDOR]

Esto es especialmente útil para depurar aplicaciones que se ejecutan dentro de un contenedor.

3. Docker Networks

Docker allows you to create and manage networks, enabling containers to communicate with each other.

Redes de Listados

To see all available networks, use:

docker red ls

b. Creando una Red

To create a new network:

docker network create [NOMBRE_DE_RED]

Ejemplo:

docker network create my_network

c. Connecting a Container to a Network

To connect an existing container to a network:

docker network connect [NETWORK_NAME] [CONTAINER_ID]

d. Desconectar un contenedor de una red

Para desconectar un contenedor de una red:

docker network disconnect [NETWORK_NAME] [CONTAINER_ID]

4. Docker Volumes

Los volúmenes se utilizan para persistir los datos generados y utilizados por los contenedores Docker. Proporcionan una forma de almacenar datos fuera de los contenedores, permitiendo que los datos permanezcan intactos incluso si los contenedores se detienen o eliminan.

a. Listado de volúmenes

To list all volumes, use:

docker volume ls

b. Creating a Volume

To create a new volume:

docker volume create [NOMBRE_DEL_VOLUMEN]

c. Inspección de un volumenPara inspeccionar un volumen, utilice el comando `docker volume inspect`. Por ejemplo, para inspeccionar el volumen `my-vol`:```bash $ docker volume inspect my-vol [ { "CreatedAt": "2017-07-27T11:35:48Z", "Driver": "local", "Labels": {}, "Mountpoint": "/var/lib/docker/volumes/my-vol/_data", "Name": "my-vol", "Options": {}, "Scope": "local" } ] ```

Para obtener información detallada sobre un volumen:

docker volume inspeccionar [NOMBRE_DEL_VOLUMEN]

d. Removing a Volume

Para eliminar un volumen:

docker volume rm [VOLUME_NAME]

Para eliminar todos los volúmenes no utilizados:

limpiar volúmenes no utilizados

5. Docker Compose

Aunque no es un solo comando, Docker Compose es una herramienta esencial para administrar aplicaciones de múltiples contenedores. Te permite definir y ejecutar aplicaciones Docker de múltiples contenedores utilizando un solo archivo YAML.

a. Definir un archivo de Compose

Crear un docker-compose.yml archivo donde defines tus servicios, redes y volúmenes.

Ejemplo:

version: '3'
services:
  web:
    image: nginx
    ports:
      - "80:80"
  db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: example

b. Inicio de Servicios

To start the services defined in your docker-compose.yml file, run:

docker-compose up

Añadir el - flag to run in detached mode.

c. Interrupción de Servicios

Para detener los servicios en ejecución, utilice:

docker-compose down

Este comando detiene y elimina los contenedores definidos en el docker-compose.yml archivo.

Seguridad de Docker

Aunque Docker simplifica el despliegue de aplicaciones, la seguridad es crucial, especialmente en entornos de producción. Comprender las implicaciones de seguridad de la contenerización puede ayudarte a mitigar riesgos. Aquí tienes algunas mejores prácticas:1. **Utiliza imágenes oficiales y de confianza**: Siempre que sea posible, utiliza imágenes oficiales de Docker Hub o repositorios de confianza. Estas imágenes suelen estar mejor mantenidas y son menos propensas a contener vulnerabilidades de seguridad.2. **Mantén tus imágenes actualizadas**: Asegúrate de que las imágenes que utilizas estén actualizadas con las últimas versiones de software y parches de seguridad. Esto reduce el riesgo de explotación de vulnerabilidades conocidas.3. **Implementa el principio de privilegio mínimo**: Ejecuta tus contenedores con el menor nivel de privilegios necesario. Evita ejecutar contenedores como root siempre que sea posible, y utiliza usuarios no privilegiados dentro de los contenedores.4. **Utiliza redes aisladas**: Docker permite crear redes aisladas para tus contenedores. Utiliza estas redes para limitar la comunicación entre contenedores y reducir la superficie de ataque.5. **Escanea tus imágenes en busca de vulnerabilidades**: Utiliza herramientas de escaneo de vulnerabilidades como Clair o Trivy para analizar tus imágenes en busca de vulnerabilidades conocidas. Esto te ayudará a identificar y corregir problemas de seguridad antes de desplegar tus contenedores.6. **Implementa el control de acceso**: Utiliza Docker Content Trust para firmar y verificar imágenes. Esto garantiza que las imágenes que utilizas provienen de fuentes confiables y no han sido modificadas.7. **Monitorea y registra la actividad de los contenedores**: Utiliza herramientas de monitoreo y registro para mantener un registro de la actividad de tus contenedores. Esto te ayudará a detectar actividades sospechosas y responder rápidamente a incidentes de seguridad.8. **Utiliza políticas de seguridad**: Implementa políticas de seguridad como AppArmor o SELinux para restringir las acciones que los contenedores pueden realizar en el sistema host.9. **Mantén el sistema host actualizado**: Asegúrate de que el sistema operativo host donde se ejecutan tus contenedores esté actualizado con los últimos parches de seguridad. Un sistema host vulnerable puede comprometer la seguridad de tus contenedores.10. **Realiza auditorías de seguridad periódicas**: Realiza auditorías de seguridad regulares para identificar y corregir posibles vulnerabilidades en tu entorno de contenedores.Siguiendo estas mejores prácticas, puedes mejorar significativamente la seguridad de tus contenedores Docker y proteger tus aplicaciones en entornos de producción.

  1. Use Official ImagesSiempre que sea posible, utiliza imágenes oficiales de Docker Hub. Estas se actualizan y mantienen regularmente por fuentes confiables.

  2. Limit Container PrivilegesEjecute los contenedores con los privilegios mínimos necesarios. --usuario option to specify a user and avoid running as root.

  3. Escanea imágenes regularmente: Utiliza herramientas como Docker Bench Security or other scanning tools to check for vulnerabilities in your images.

  4. Controlar el uso de recursos: Limit the amount of CPU and memory a container can use with the --memoria and --cpus options when running a container.

  5. Network Security: Isolate containers using networks and limit access to only those that need it.

Conclusión

Understanding Docker CLI and its essential commands is crucial for any developer looking to leverage the power of containerization. The commands outlined in this article provide a solid foundation for beginners, allowing you to manage images, containers, networks, and volumes effectively.

As you advance in your Docker journey, consider exploring more complex scenarios such as multi-container applications with Docker Compose, orchestration with Kubernetes, and continuous integration and deployment (CI/CD) pipelines that integrate Docker for automated deployments.

By mastering Docker CLI, you will enhance your development workflow, increase the consistency of your applications, and ultimately deliver better software faster. Happy Dockerizing!