Introducción a Docker

 

Docker: Contenedores para Desarrollo y Despliegue de Aplicaciones

Introducción a Docker

  • ¿Qué es Docker?

    • Docker es una plataforma que permite desarrollar, enviar y ejecutar aplicaciones en contenedores.

    • Un contenedor es una unidad estándar de software que empaqueta el código y todas sus dependencias, permitiendo que la aplicación se ejecute rápidamente y de manera confiable en cualquier entorno.

IMÁGENES

  • Para gestionar las imágenes, se utiliza el comando:
    sudo docker image OPCIONES

  • Para descargar una imagen:
    sudo docker image pull REPOSITORIO
    sudo docker pull REPOSITORIO

  • Para ver las imágenes ya descargadas:
    sudo docker image ls

Para borrar una imagen (se deben borrar previamente los contenedores basados en esa imagen):
sudo docker image rm IMAGEN

Cosas importantes a saber antes de crear un contenedor Docker:

  • El contenedor no tendrá nada instalado por defecto, lo primero que se hará es un apt-get update para descargar los repositorios del sistema

  • Una vez dentro del contenedor se puede escribir exit y se saldrá del contenedor, pero se perderá toda la información del contenedor, archivos, aplicaciones, instalaciones… (después se verá como salir sin cerrar el contenedor)

Por defecto, y como se ha mostrado anteriormente, la instalación de Docker crea un contenedor llamado hello-world. Para ver las imágenes que hay descargadas se ejecuta .


$ docker images


El paso de ahora es muy importante, pues no se puede salir del contenedor con exit. Para salir y dejar el contenedor abierto se hará con una combinación de teclas, ctrl q + p. Una vez pulsadas se pueden ver los contenedores activos con $ docker ps


Docker le asigna el nombre DEBRASP al contenedor, que es el que se le ha asignado anteriormente con el argumento "--name=". Si se cierra y se vuelve a abrir el contenedor y no le asignamos nombre, asignará un nombre aleatorio, pero mientras permanezca activo utilizará ese. Si por lo que sea se quiere volver a acceder a ese contenedor se haría con el comando: 


$ docker attach DEBRASP


Esto se podría hacer con un contenedor que esté abierto, si se lanza un contenedor y se le asigna un puerto y está cerrado se bloquea la máquina y habrá que apagarla por la fuerza.

Tienes dos opciones principales para trabajar con Docker:

  1. Usar imágenes existentes en Docker Hub:

    • Docker Hub es un repositorio en línea que contiene miles de imágenes preconstruidas para una variedad de aplicaciones y servicios. Puedes buscar y descargar estas imágenes directamente desde Docker Hub utilizando el comando docker pull <imagen>. Estas imágenes están listas para ser ejecutadas y a menudo incluyen configuraciones comunes y optimizadas.

  2. Crear tus propias imágenes utilizando Dockerfile:

    • Si necesitas una configuración personalizada o específica, puedes crear tus propias imágenes mediante un archivo Dockerfile. Un Dockerfile es un script de texto que contiene una serie de comandos que Docker ejecuta para construir una imagen. Esto te permite definir exactamente qué software y configuraciones se deben incluir en tu contenedor.

Componentes de Docker

  • Docker Engine: Motor central que corre y gestiona contenedores.

  • Docker Imágenes: Una imagen Docker es una plantilla de sólo lectura utilizada para crear contenedores. Incluye todo lo necesario para ejecutar una aplicación, como el código, las bibliotecas y las herramientas del sistema. Las imágenes suelen construirse a partir de archivos Dockerfile o garlas de docker hub.

  • Dockerfile: Un Dockerfile es un archivo de texto que contiene instrucciones sobre cómo construir una imagen Docker. Describe pasos como la instalación del software, la copia de archivos y la configuración del entorno necesario para ejecutar la aplicación.

  • Centro Docker: Docker Hub ies un registro público donde puedes almacenar, compartir y descargar imágenes Docker. Sirve como repositorio central de imágenes Docker, permitiendo una fácil distribución y reutilización de entornos preconfigurados.

  • Docker Build: Comando que permite construir una imagen a partir de un Dockerfile. Se usa para generar imágenes personalizadas con configuraciones específicas. Ejemplo: docker build -t mi-imagen .

  • Docker Compose: Herramienta que permite definir y ejecutar múltiples contenedores en conjunto mediante un archivo 

docker-compose.yml

Facilita la administración de entornos complejos, como aplicaciones con bases de datos, servidores web y microservicios. Se ejecuta con docker-compose up -d.

  • Volúmenes: Los volúmenes son una forma de persistir los datos generados y utilizados en los contenedores Docker. Te permiten gestionar y almacenar datos fuera del ciclo de vida del contenedor, garantizando que los datos importantes no se pierdan cuando los contenedores se detienen o se eliminan.

  • Redes: Las redes Docker facilitan la comunicación entre contenedores. Cada contenedor puede conectarse a una o varias redes, lo que les permite interactuar y compartir datos de forma segura.



Comandos Básicos de Docker

docker run: Ejecutar un contenedor.   


docker run -it ubuntu


docker build: Construir una imagen a partir de un Dockerfile.

docker build -t myapp .


docker ps: Listar contenedores en ejecución.

docker ps


docker stop: Detener un contenedor.

docker stop <container_id>














Flujo de Trabajo con Docker

1️⃣ Crear un Dockerfile: Define el entorno, dependencias y configuraciones necesarias para la aplicación.

2️⃣ Construir la Imagen con Docker Build: Utiliza el Dockerfile para crear una imagen personalizada con el comando:

docker build -t nombre-imagen .

3️⃣ Definir la Orquestación con Docker Compose (opcional, si hay múltiples servicios):

  • Crea un archivo docker-compose.yml para gestionar varios contenedores y configuraciones en conjunto.

  • Usa docker-compose up -d para levantar todos los servicios automáticamente.

4️⃣ Ejecutar el Contenedor:

Si usaste Docker Build, ejecuta la imagen manualmente con:

docker run -p 8080:80 nombre-imagen

  • Si usaste Docker Compose, simplemente ejecuta:
    docker-compose up -d

5️⃣ Administrar Contenedores: Supervisar, detener o eliminar contenedores en ejecución con comandos como:

  • docker ps → Ver contenedores en ejecución.

  • docker stop ID_CONTENEDOR → Detener un contenedor.

  • docker rm ID_CONTENEDOR → Eliminar un contenedor detenido.



Conclusión

  • Docker simplifica la creación, despliegue y ejecución de aplicaciones.

  • Aporta consistencia, portabilidad, escalabilidad, y aislamiento.

  • Con Docker, puedes asegurar que tu aplicación funcione igual en cualquier entorno, optimizando el ciclo de vida del desarrollo de software.










### Introducción a Docker


Docker es una plataforma de contenedorización que permite a los desarrolladores empaquetar sus aplicaciones y dependencias en un contenedor. La contenedorización facilita la creación, despliegue y ejecución de aplicaciones de manera consistente.



### ¿Cómo funciona Docker?


Docker utiliza imágenes y contenedores:

- **Imagen:** Es una plantilla de solo lectura que define el contenedor. Puede estar basada en una imagen oficial de Docker o personalizada.


- **Contenedor:** Es una instancia de una imagen en ejecución. Es un entorno aislado donde se ejecuta la aplicación.


  • Imágenes: Una imagen Docker es una plantilla de sólo lectura utilizada para crear contenedores. Incluye todo lo necesario para ejecutar una aplicación, como el código, las bibliotecas y las herramientas del sistema. 

  • Dockerfile: Un Dockerfile es un archivo de texto que contiene instrucciones sobre cómo construir una imagen Docker. Describe pasos como la instalación del software, la copia de archivos y la configuración del entorno necesario para ejecutar la aplicación.

  • Centro Docker: Docker Hub ies un registro público donde puedes almacenar, compartir y descargar imágenes Docker. Sirve como repositorio central de imágenes Docker, permitiendo una fácil distribución y reutilización de entornos preconfigurados.

  • Docker Build: Comando que permite construir una imagen a partir de un Dockerfile. Se usa para generar imágenes personalizadas con configuraciones específicas. Ejemplo: 

docker build -t mi-imagen .

  • Docker Compose: Herramienta que permite definir y ejecutar múltiples contenedores en conjunto mediante un archivo docker-compose.yml. Facilita la administración de entornos complejos, como aplicaciones con bases de datos, servidores web y microservicios. Se ejecuta con docker-compose up -d.

  • Volúmenes: Los volúmenes son una forma de persistir los datos generados y utilizados en los contenedores Docker. Te permiten gestionar y almacenar datos fuera del ciclo de vida del contenedor, garantizando que los datos importantes no se pierdan cuando los contenedores se detienen o se eliminan.

  • Redes: Las redes Docker facilitan la comunicación entre contenedores. Cada contenedor puede conectarse a una o varias redes, lo que les permite interactuar y compartir datos de forma segura.


Tienes dos opciones principales para trabajar con Docker:

  1. Usar imágenes existentes en Docker Hub:

    • Docker Hub es un repositorio en línea que contiene miles de imágenes preconstruidas para una variedad de aplicaciones y servicios. Puedes buscar y descargar estas imágenes directamente desde Docker Hub utilizando el comando docker pull <imagen>. Estas imágenes están listas para ser ejecutadas y a menudo incluyen configuraciones comunes y optimizadas.

  2. Crear tus propias imágenes utilizando Dockerfile:

    • Si necesitas una configuración personalizada o específica, puedes crear tus propias imágenes mediante un archivo Dockerfile. Un Dockerfile es un script de texto que contiene una serie de comandos que Docker ejecuta para construir una imagen. Esto te permite definir exactamente qué software y configuraciones se deben incluir en tu contenedor.



Generar un contenedor de imágenes a partir de un Dockerfile. Un Dockerfile es un archivo de texto que contiene un conjunto de instrucciones con todos los comandos dependientes.


Dockerfile es un archivo de texto que contiene un conjunto de comandos DOCKER. Dockerfile contiene comentarios para describir la línea de comandos.


El comando ps se usa con Docker para enumerar todos los contenedores.


docker ps



### 10 comandos más útiles de Docker

docker version


docker-compose version


1. `docker --version`: Ver la versión de Docker instalada.


2. `docker pull <imagen>`: Descargar una imagen desde Docker Hub.


3. `docker build -t <nombre_imagen> .`: Construir una imagen desde un Dockerfile en el directorio actual.


4. `docker run -d -p <puerto_host>:<puerto_contenedor> <imagen>`: Ejecutar un contenedor en modo desatendido (detached) y mapear puertos.


5. `docker ps`: Listar contenedores en ejecución.


6. `docker stop <id_contenedor>`: Detener un contenedor en ejecución.


7. `docker rm <id_contenedor>`: Eliminar un contenedor detenido.


8. `docker rmi <id_imagen>`: Eliminar una imagen.


9. `docker exec -it <id_contenedor> /bin/bash`: Acceder a un contenedor en ejecución con una terminal interactiva.

10. `docker logs <id_contenedor>`: Ver los logs de un contenedor.


### Crear un contenedor Docker con PHP


1. **Instalar Docker:**

   - Descargar e instalar Docker desde [https://www.docker.com/products/docker-desktop](https://www.docker.com/products/docker-desktop) según tu sistema operativo.


2. **Crear un Dockerfile:**

   - En un directorio vacío, crear un archivo llamado `Dockerfile` y agregar el siguiente contenido:  ```Dockerfile

     # Usar la imagen base oficial de PHP

     FROM php:7.4-cli

     

     # Copiar los archivos del proyecto al contenedor

     COPY . /usr/src/myapp

     

     # Establecer el directorio de trabajo

     WORKDIR /usr/src/myapp

     

     # Ejecutar el archivo PHP al iniciar el contenedor

     CMD [ "php", "./tu_archivo.php" ]

     ```


3. **Construir la imagen:**

   - En la terminal, navegar al directorio donde se encuentra el Dockerfile y ejecutar:

     ```

     docker build -t mi_php_app .

     ```


4. **Ejecutar el contenedor:**

   - Una vez construida la imagen, ejecutar el contenedor:

     ```

     docker run -it --rm --name mi_php_cont mi_php_app

     ```


¡Y eso es todo! Ahora tus alumnos deberían tener una comprensión básica de Docker y los pasos para crear un contenedor con PHP. Si tienes alguna pregunta adicional, ¡estaré encantado de ayudar!



Configura el repositorio apt de Docker:


Ejecuta los siguientes comandos:


sudo apt-get update

sudo apt-get install ca-certificates curl

sudo install -m 0755 -d /etc/apt/keyrings

sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc

sudo chmod a+r /etc/apt/keyrings/docker.asc

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update


Instala paquetes Docker:

  • Instala el motor Docker y otros componentes necesarios:

sudo apt-get install docker-ce docker-ce-cli containerd.io

Verifica la instalación:

  • Ejecuta el siguiente comando para comprobar si Docker está instalado:

sudo docker --version


Ejecuta tu primer contenedor

sudo docker run hello-world


Comentarios

Entradas más populares de este blog

ejercicios-Crear Carpeta y Archivo de Texto en Ubuntu

Tutorial de Carpetas y Directorios en Ubuntu Linux

Instalar Docker en Ubuntu Server usando docker.io