Ejercicios resueltos de Docker: contenedores, Compose, Swarm y MariaDB

InformáticaActualizado el 3,79 KB

Resumen

Recopilación de ejercicios resueltos sobre Docker: tipos de contenedores, sistema de archivos en capas, configuración de servicios con docker-compose.yml y requisitos de nodos en Docker Swarm. Incluye además ejemplos de ejecución de MySQL y MariaDB, con la creación de contenedores, la conexión a la base de datos y la persistencia de datos mediante volúmenes.

Puntos clave

  • Existen tres tipos de contenedores: programas (se detienen al terminar), servicios (se mantienen en ejecución) y datos (almacenan información y exportan volúmenes).
  • El sistema de archivos en capas usa capas de solo lectura y una capa superior escribible propia del contenedor, lo que mejora la eficiencia.
  • En docker-compose.yml se pueden configurar, entre otros, image, build, ports, depends_on, links y network.
  • Un contenedor de programas Windows no se ejecuta directamente en un servidor Linux, porque cada uno necesita su propio entorno operativo.
  • Para tolerar un fallo y poder detener otro nodo en Docker Swarm se necesitan como mínimo 3 nodos.
  • La persistencia de datos de MariaDB se consigue asociando el directorio /var/lib/mysql del contenedor con un directorio del host mediante -v.

Ponte a prueba

Ejercicios Tema 6 – SDIS

1. Enumera los tipos principales de contenedores

Existen tres tipos fundamentales:

  • Programas: Al terminar la ejecución, el contenedor se detiene. Se puede utilizar la entrada/salida (E/S) y todos los cambios se pierden tras la ejecución.
  • Servicios: Son programas que se mantienen en ejecución constante. Suelen requerir el mapeo de puertos para comunicarse y los cambios se pierden al detener el servicio.
  • Datos: Almacenan información y pueden exportar volúmenes que son utilizados por otros contenedores.

2. Describe brevemente en qué consiste el sistema de archivos en capas de los contenedores

El sistema de archivos funciona mediante capas de solo lectura superpuestas, donde la capa superior es propia del contenedor y permite la escritura. Este diseño aumenta la eficiencia, ya que solo se almacenan los cambios y las capas comunes complementan la información.

3. Enumera los elementos principales que se pueden configurar en un servicio mediante el archivo docker-compose.yml

Se pueden configurar diversos elementos, entre ellos:

  • image: Define la imagen que se utilizará para el servicio.
  • build: Permite especificar la ubicación del Dockerfile y construir una imagen personalizada.
  • ports: Configura el mapeo de puertos.
  • depends_on: Define los servicios de los que depende el contenedor actual.
  • links: Utilizado para enlazar servicios entre sí.
  • network: Configuración de redes.

4. ¿En general, podemos ejecutar contenedores de programas Windows en un servidor Linux?

No, cada uno requiere aplicaciones y servicios específicos adaptados a su propio entorno operativo.

5. ¿Qué comando docker utilizarías para ejecutar un servicio de datos MySQL que escuche en el puerto 3306?

El comando sería el siguiente:

docker run -d -p 3306:3306 --name nombre_del_contenedor -e MYSQL_ROOT_PASSWORD=contraseña_mysql mysql

6. ¿Cuántos nodos necesitamos como mínimo en Docker Swarm para tolerar un fallo y permitir detener otro nodo?

Para tolerar un fallo y tener la posibilidad de detener otro nodo, se requieren 3 nodos (cálculo: 1 fallo + 1 para detener = 2, siendo 3 > 5/2).

Ejercicio 7: Gestión de bases de datos MariaDB

1. Creación y prueba de una base de datos MariaDB

  1. Descarga de la imagen: docker pull mariadb
  2. Creación del contenedor: docker run -d --name contenedor -e MYSQL_ROOT_PASSWORD=contraseña_root mariadb
  3. Conexión y prueba: docker exec -it contenedor mysql -uroot -pcontraseña_root. Para comprobar el funcionamiento, ejecuta: SHOW DATABASES;

Nota: Tienes toda la información sobre cómo usar esta imagen en el repositorio oficial de MariaDB.

2. Persistencia de datos

Para asociar el directorio de la base de datos con un directorio del host:

  1. Detener y eliminar el contenedor existente:
    docker stop contenedor
    docker rm contenedor
  2. Crear el directorio en el host: mkdir /ruta/contenedor_data
  3. Crear el contenedor con volumen asociado:
    docker run -d --name contenedor -e MYSQL_ROOT_PASSWORD=contraseña_root -v /ruta/contenedor_data:/var/lib/mysql mariadb

Descargar

PDF Word HTML

Preguntas frecuentes

¿Cuántos nodos necesito en Docker Swarm para tolerar un fallo y detener otro nodo?

Se necesitan 3 nodos como mínimo. El cálculo del texto es 1 fallo más 1 nodo detenido, es decir 2, siendo 3 mayor que 5/2.

¿Qué ocurre con los datos de un contenedor de MariaDB al eliminarlo?

Sin volumen asociado, los datos se pierden al eliminar el contenedor. Para conservarlos hay que montar el directorio /var/lib/mysql con un directorio del host usando la opción -v.

Ponte a prueba

Tarjetas de repaso

Pulsa una tarjeta para ver la respuesta.

Test

1. ¿Cuál de los siguientes es un tipo fundamental de contenedor según el documento?
2. ¿Qué ocurre con los cambios de un contenedor de tipo programa al terminar su ejecución?
3. ¿Qué opción de docker-compose.yml define la imagen que usará el servicio?
4. ¿Para qué sirve la opción depends_on en docker-compose.yml?
5. ¿Se pueden ejecutar contenedores de programas Windows en un servidor Linux, según el documento?
6. ¿Cuántos nodos mínimos se necesitan en Docker Swarm para tolerar un fallo y detener otro nodo?
7. ¿Qué comando muestra las bases de datos en MariaDB una vez conectado?
8. ¿Qué opción se usa para asociar un directorio del host con el directorio de datos de MariaDB?

Preguntas generadas con IA a partir del documento: comprueba las respuestas con el texto.