Docker: Contenedores, Imágenes y Comandos
48 Questions
3 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

¿Cuál de las siguientes opciones describe mejor la función del demonio de Docker?

  • Gestionar objetos de Docker como imágenes, contenedores y redes, y escuchar peticiones a la API. (correct)
  • Proporcionar una interfaz gráfica para que los usuarios interactúen con Docker.
  • Actuar como la principal herramienta que los administradores de sistemas utilizan para crear imágenes de Docker.
  • Almacenar imágenes de Docker para su reutilización.

Un contenedor de Docker es una plantilla de solo lectura que contiene las instrucciones para crear una imagen de Docker.

False (B)

¿Cuál es el principal registro público de Docker donde se almacenan y descargan imágenes?

Docker Hub

Los __________ permiten escalar contenedores a través de múltiples demonios de Docker, trabajando conjuntamente como un enjambre.

<p>servicios</p> Signup and view all the answers

Relacione los siguientes objetos de Docker con sus definiciones:

<p>Imagen = Plantilla de solo lectura que contiene instrucciones para crear un contenedor. Contenedor = Instancia ejecutable de una imagen. Servicio = Permite escalar contenedores en un enjambre de Docker.</p> Signup and view all the answers

¿Qué significa Docker CE?

<p>Docker Community Edition (C)</p> Signup and view all the answers

Docker CE está disponible para sistemas operativos Windows y macOS.

<p>False (B)</p> Signup and view all the answers

Un contenedor está definido por la imagen de la que procede y:

<p>Las opciones de configuración que permite la imagen. (A)</p> Signup and view all the answers

¿Cuál de los siguientes comandos se utiliza para añadir un usuario al grupo de Docker en Linux?

<p><code>sudo usermod -aG docker $USER</code> (C)</p> Signup and view all the answers

Después de añadir un usuario al grupo de Docker, los nuevos permisos se aplican inmediatamente sin necesidad de cerrar sesión.

<p>False (B)</p> Signup and view all the answers

¿Cómo se instala Docker Compose en sistemas Ubuntu o Debian utilizando el gestor de paquetes APT?

<p><code>sudo apt install docker-compose</code></p> Signup and view all the answers

Las imágenes de Docker son plantillas de ______ que sirven como base para crear contenedores.

<p>solo lectura</p> Signup and view all the answers

¿Qué tipo de imágenes se recomienda buscar en el registro de Docker Hub para asegurar su calidad y mantenimiento?

<p>Imágenes oficiales (B)</p> Signup and view all the answers

Crear una imagen de Docker desde cero siempre es la opción más eficiente y recomendada.

<p>False (B)</p> Signup and view all the answers

¿Qué comando de Docker se utiliza para descargar una imagen desde un registro, como Docker Hub?

<p><code>docker pull</code> [nombre de la imagen]</p> Signup and view all the answers

Relacione las siguientes imágenes de Docker con su respectivo uso:

<p>WordPress = Creación y gestión de sitios web y blogs. MariaDB = Sistema de gestión de bases de datos. Docker Compose = Herramienta para definir y ejecutar aplicaciones multi-contenedor.</p> Signup and view all the answers

Después de ejecutar sudo docker run hello-world por primera vez, ¿qué indica la línea 'Unable to find image 'hello-world:latest' locally'?

<p>La imagen 'hello-world' no está presente en el registro local de Docker y se buscará en el registro público. (A)</p> Signup and view all the answers

El comando docker run -it ubuntu bash inicia un contenedor Ubuntu y te da acceso a una terminal dentro de él.

<p>True (A)</p> Signup and view all the answers

¿Cuál es el primer paso que realiza Docker al ejecutar el comando sudo docker run hello-world?

<p>El cliente de Docker contacta al daemon de Docker.</p> Signup and view all the answers

El comando sudo docker run hello-world intenta ejecutar un contenedor basado en la imagen llamada ______.

<p>hello-world</p> Signup and view all the answers

Relacione los siguientes comandos de Docker con su descripción:

<p><code>docker run hello-world</code> = Ejecuta un contenedor de prueba. <code>docker pull &lt;image&gt;</code> = Descarga una imagen desde un registro. <code>docker stop &lt;container&gt;</code> = Detiene un contenedor en ejecución. <code>docker images</code> = Lista las imágenes disponibles localmente.</p> Signup and view all the answers

¿Qué paso realiza el daemon de Docker después de contactar al registro de Docker Hub al ejecutar el comando sudo docker run hello-world?

<p>Descarga la imagen 'hello-world'. (C)</p> Signup and view all the answers

La documentación oficial de Docker sugiere que la forma de instalar Docker es la misma para todas las distribuciones de Linux.

<p>False (B)</p> Signup and view all the answers

Después de descargar la imagen, ¿qué hace el daemon de Docker antes de enviar la salida al cliente?

<p>El daemon de Docker crea un nuevo contenedor a partir de esa imagen.</p> Signup and view all the answers

¿Qué comando de Docker se utiliza para listar todos los volúmenes disponibles?

<p><code>docker volume ls</code> (B)</p> Signup and view all the answers

Es seguro acceder directamente a los directorios del sistema donde se almacenan los volúmenes de Docker mientras un contenedor los está utilizando.

<p>False (B)</p> Signup and view all the answers

¿Qué parámetro se utiliza en el comando docker run para ejecutar un contenedor en segundo plano?

<p>-d</p> Signup and view all the answers

Para eliminar un volumen de Docker que ya no está en uso, se utiliza el comando docker volume _________.

<p>rm</p> Signup and view all the answers

¿Cuál de los siguientes motores de bases de datos es compatible con WordPress, según el contenido?

<p>MySQL y MariaDB (C)</p> Signup and view all the answers

El parámetro -p en el comando docker run se utiliza para configurar variables de entorno dentro del contenedor.

<p>False (B)</p> Signup and view all the answers

¿Qué tipo de objetos de Docker pueden ser eliminados si no están en uso?

<p>volúmenes</p> Signup and view all the answers

Empareja los siguientes parámetros del comando docker run con su función:

<p>-d = Ejecutar el contenedor en segundo plano --mount = Montar un volumen en el contenedor -e = Establecer variables de entorno -p = Publicar un puerto del contenedor en el host</p> Signup and view all the answers

¿Cuál de los siguientes comandos de docker-compose es equivalente a la configuración mostrada en el ejemplo del archivo docker-compose.yml para WordPress?

<p><code>docker-compose up -d</code> (D)</p> Signup and view all the answers

Después de reiniciar una máquina, los contenedores Docker configurados sin la directiva restart se inician automáticamente al arrancar el sistema operativo.

<p>False (B)</p> Signup and view all the answers

¿Qué parámetro en Docker se utiliza para especificar el comportamiento de reinicio de un contenedor después de un reinicio del sistema?

<p>restart</p> Signup and view all the answers

La directiva ____________ en un Dockerfile especifica la imagen base sobre la cual se construye la nueva imagen.

<p>FROM</p> Signup and view all the answers

¿Cuál es la función principal de la directiva COPY en un Dockerfile?

<p>Copiar archivos o directorios del contexto de construcción a la imagen (B)</p> Signup and view all the answers

El 'build context' en Docker se refiere a un archivo individual que contiene todas las instrucciones para construir una imagen.

<p>False (B)</p> Signup and view all the answers

¿Qué comando de Docker se utiliza para construir una imagen a partir de un Dockerfile?

<p>docker build</p> Signup and view all the answers

Relacione cada directiva de Dockerfile con su descripción:

<p>FROM = Indica la imagen base sobre la que se basa esta imagen COPY = Copia un archivo del build context y lo guarda en la imagen RUN = Ejecuta el comando indicado durante el proceso de creación de la imagen</p> Signup and view all the answers

¿Cuál es el propósito del parámetro -t en el comando docker build?

<p>Etiquetar la imagen con un nombre y una versión. (A)</p> Signup and view all the answers

El parámetro --rm en el comando docker run elimina permanentemente la imagen del contenedor una vez que este se detiene.

<p>False (B)</p> Signup and view all the answers

¿Qué tipo de archivo se utiliza para listar las dependencias de una aplicación Python necesarias para construir una imagen de Docker?

<p>requirements.txt</p> Signup and view all the answers

En el contexto de Docker, el término build context se refiere a el directorio ________.

<p>actual</p> Signup and view all the answers

¿Cuál de las siguientes opciones describe mejor la función del archivo Dockerfile?

<p>Especifica los pasos para construir una imagen de Docker. (C)</p> Signup and view all the answers

Los datos volátiles dentro de un contenedor Docker deben guardarse directamente en la imagen para asegurar su persistencia.

<p>False (B)</p> Signup and view all the answers

Relacione las siguientes directivas de Dockerfile con su función:

<p>FROM = Establece la imagen base para la construcción. RUN = Ejecuta comandos durante la construcción de la imagen. COPY = Copia archivos y directorios desde el host al contenedor. EXPOSE = Especifica los puertos que la aplicación escuchará en el contenedor.</p> Signup and view all the answers

¿Qué comando se utiliza para iniciar un contenedor Docker a partir de una imagen?

<p>docker run</p> Signup and view all the answers

Flashcards

Demonio de Docker

Proceso principal de Docker que gestiona imágenes y contenedores.

Cliente de Docker

Herramienta para interactuar con el sistema Docker.

Registro de Docker

Lugar donde se almacenan y descargan imágenes de Docker.

Imagen de Docker

Plantilla de solo lectura para crear un contenedor Docker.

Signup and view all the flashcards

Contenedor de Docker

Instancia ejecutable de una imagen Docker.

Signup and view all the flashcards

Servicios de Docker

Permiten escalar contenedores a través de múltiples demonios de Docker.

Signup and view all the flashcards

Docker CE

Versión gratuita de Docker.

Signup and view all the flashcards

Sistemas compatibles con Docker CE

Sistemas GNU/Linux compatibles con Docker CE.

Signup and view all the flashcards

docker run hello-world

Comando para ejecutar un contenedor de ejemplo en Docker para verificar la instalación.

Signup and view all the flashcards

Contenedor

Un entorno aislado donde se ejecutan aplicaciones. Se crea a partir imágenes.

Signup and view all the flashcards

Registro público de Docker

Almacén público donde se guardan y se comparten imágenes de Docker.

Signup and view all the flashcards

Image not found locally

Indica que Docker no encontró la imagen localmente e intentará descargarla del registro público.

Signup and view all the flashcards

Pulling image

Proceso de descarga de una imagen Docker del registro (normalmente Docker Hub).

Signup and view all the flashcards

Ejecución de contenedor

Docker crea un contenedor a partir de una imagen y ejecuta el comando especificado en la misma.

Signup and view all the flashcards

Añadir usuario al grupo Docker

Permite usar Docker sin sudo.

Signup and view all the flashcards

Cerrar y abrir sesión

Actualiza los permisos del usuario.

Signup and view all the flashcards

Comando docker pull

Descarga imágenes de contenedores desde un registro.

Signup and view all the flashcards

Docker Compose

Herramienta para definir y ejecutar aplicaciones Docker multi-contenedor.

Signup and view all the flashcards

Imagen Docker

Plantilla de solo lectura para crear contenedores.

Signup and view all the flashcards

Registro de imágenes

Almacenes de imágenes Docker, público o privado.

Signup and view all the flashcards

Imagen oficial

Imagen mantenida por el equipo oficial de Docker.

Signup and view all the flashcards

Nombre de la imagen y etiqueta

Nombre e identificador de una versión específica de una imagen.

Signup and view all the flashcards

Volumen en Docker

Un área de almacenamiento persistente para datos de contenedores.

Signup and view all the flashcards

docker volume ls

Muestra una lista de todos los volúmenes disponibles en Docker.

Signup and view all the flashcards

docker volume inspect

Muestra los metadatos detallados de un volumen específico.

Signup and view all the flashcards

docker volume rm

Elimina un volumen de Docker (solo si no está en uso).

Signup and view all the flashcards

docker run -d mariadb

Crea y ejecuta un contenedor MariaDB en segundo plano.

Signup and view all the flashcards

--mount source=...,target=...

Enlaza un volumen a un directorio dentro del contenedor.

Signup and view all the flashcards

Parámetro -e en Docker

Establece variables de entorno para configurar el contenedor.

Signup and view all the flashcards

Opción -d en docker run

Ejecuta un contenedor en segundo plano.

Signup and view all the flashcards

Volúmenes en Docker Compose

Volúmenes en Docker Compose permiten persistir datos entre reinicios.

Signup and view all the flashcards

Parámetro Restart en Docker

Reinicia contenedores automáticamente después de un reinicio del sistema.

Signup and view all the flashcards

Dockerfile

Archivo de texto que contiene instrucciones para crear una imagen de Docker.

Signup and view all the flashcards

Build Context

Directorio que contiene todos los archivos necesarios para construir una imagen de Docker.

Signup and view all the flashcards

FROM (en Dockerfile)

Indica la imagen base sobre la que se construirá la nueva imagen.

Signup and view all the flashcards

COPY (en Dockerfile)

Copia archivos y directorios desde el build context a la imagen de Docker.

Signup and view all the flashcards

RUN (en Dockerfile)

Ejecuta comandos durante el proceso de creación de la imagen.

Signup and view all the flashcards

docker build

Comando para construir una imagen de Docker a partir de un Dockerfile.

Signup and view all the flashcards

Parámetro -t en docker build

Etiqueta una imagen con un nombre y una versión al construirla.

Signup and view all the flashcards

El punto (.) en docker build

Especifica el directorio actual como el contexto para construir la imagen.

Signup and view all the flashcards

Parámetro --rm en docker run

Opción que elimina automáticamente el contenedor al detenerlo.

Signup and view all the flashcards

Parámetro -p en docker run

Redirige un puerto del host a un puerto dentro del contenedor.

Signup and view all the flashcards

requirements.txt

Archivo que lista las dependencias de Python necesarias para una aplicación.

Signup and view all the flashcards

Study Notes

Introducción

  • Docker automatiza el despliegue de aplicaciones dentro de contenedores de software.
  • Proporciona una capa de abstracción y automatización de virtualización de aplicaciones en múltiples sistemas operativos.
  • Utiliza características de aislamiento de recursos del kernel Linux, como cgroups y espacios de nombres (namespaces) para permitir que 'contenedores' independientes se ejecuten dentro de una sola instancia de Linux.
  • Esto evita la sobrecarga de iniciar y mantener máquinas virtuales.

¿Quién puede usar Docker?

  • Docker es útil para administradores de sistemas y desarrolladores.
  • Ayuda a solucionar problemas de sistemas heterogéneos durante el desarrollo y despliegue de aplicaciones.
  • Asegura la calidad del desarrollo al garantizar que todos usen las mismas versiones de aplicaciones y librerías.
  • Permite crear entornos aislados con configuraciones idénticas.

¿Docker es Virtualización?

  • En GNU/Linux, Docker no es virtualizado, no hay un hipervisor.
  • Los procesos se ejecutan con el mismo kernel.
  • Aísla los procesos del resto de los procesos del sistema y controla los recursos asignados.
  • El contenedor no sabe que lo es, y es una distribución GNU/Linux independiente sin la penalización de rendimiento de los sistemas virtualizados.
  • Permite una distribución construida a partir de una "receta" que garantiza que el sistema que se ejecuta siempre sea el mismo.
  • Si se ejecutan contenedores GNU/Linux dentro de sistemas privativos, sí habrá virtualización.

Conceptos Básicos

  • Demonio de Docker (docker daemon): Es el proceso principal, escucha peticiones a la API, y maneja imágenes, contenedores, redes, y volúmenes. Se comunica con otros demonios.
  • Cliente de Docker (docker client): Es la principal herramienta para interactuar con el sistema Docker.
  • Registro de Docker (docker registry): Es donde se almacenan las imágenes de Docker.
  • Docker Hub es el principal registro público de Docker con imágenes listas para usar (MySQL, WordPress, etc.).

Objetos de Docker

  • Imagen (image): Plantilla de solo lectura que contiene las instrucciones para crear un contenedor Docker.
  • Contenedor (container): Instancia ejecutable de una imagen que puede ser creada, iniciada, detenida, movida o eliminada.
  • Las instancias se pueden conectar a redes o sistemas de almacenamiento y se controla como de aislado está el contenedor del sistema anfitrión y del resto de contenedores.
  • Servicios (services): Permiten escalar un contenedor a través de múltiples demonios de Docker que trabajan en conjunto como un enjambre (swarm).

Instalación

  • Existen dos versiones de Docker: una libre (Community Edition) y otra no libre.
  • Docker CE está disponible para GNU/Linux (CentOS, Debian, Fedora, Ubuntu) en varias arquitecturas (x86_64/amd64).

Disponibilidad

  • La forma de instalar Docker varía según la distribución, por lo que se recomienda consultar la documentación oficial.
  • Para Ubuntu, use: https://docs.docker.com/install/linux/docker-ce/ubuntu/
  • Para Debian, use: https://docs.docker.com/install/linux/docker-ce/debian/
  • Para CentOS, use: https://docs.docker.com/install/linux/docker-ce/centos/
  • Para Fedora, use: https://docs.docker.com/install/linux/docker-ce/fedora/

Instalación

  • Para verificar que Docker esté bien instalado, ejecute un contenedor de ejemplo.
  • Comando: sudo docker run hello-world

Configuración del Usuario

  • Para usar Docker sin sudo, agregue su usuario al grupo docker.
  • Comando: sudo usermod -aG docker $USER
  • Cierre y vuelva a abrir la sesión para que los cambios surtan efecto.

Imágenes

  • Es necesario tener ciertas imágenes instaladas.
  • Para instalar WordPress: docker pull wordpress:latest
  • Para instalar MariaDB: docker pull mariadb:latest
  • Asegúrese de haber configurado los permisos y cerrado la sesión antes de ejecutar estos comandos.

Herramientas

  • Es necesario tener Docker Compose.
  • Se puede instalar desde la página de instalación de Docker Compose.
  • En Ubuntu o Debian, se instala más fácil con apt.
  • Comando: sudo apt install docker-compose

Imágenes

  • Las imágenes son la base de Docker y son plantillas de solo lectura que se crean incorporando los requisitos para cumplir un objetivo.
  • Para crear un proyecto con PHP, se incorporará el intérprete de PHP.
  • Para una página web, se agregará el servidor web (Apache, Nginx, etc.).

Buscar Imágenes

  • Lo normal es partir o usar una imagen ya creada debido lo dificultoso que es crear una imagen desde cero.
  • Se buscan en los registros, como el registro oficial (https://hub.docker.com).
  • Se recomienda usar imágenes oficiales de WordPress, ya que están mantenidas y bien documentadas.

Gestión de Imágenes

  • Las imágenes se identifican por nombre y versión.
  • En la página de WordPress, hay una pestaña de Tags con las versiones disponibles.
  • Para usar una versión específica, agregue dos puntos seguido del nombre de la versión. Si no se especifica, se descarga la etiquetada como latest.
  • Para descargar imágenes, use el comando: docker pull

Descargar

  • Ejemplo para descargar WordPress latest: docker pull wordpress:latest
  • Ejemplo para descargar WordPress php7.1: docker pull wordpress:php7.1

Listado

  • Para ver el listado de imágenes disponibles, use: docker images
  • Ejemplo de salida:
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
wordpress    latest    ca0fefec932b   7 days ago   409MB
wordpress    php7.1    37664bd9863e  7 days ago   400MB
hello-world  latest    4ab4c602aa5e  2 weeks ago  1.84kB

Borrado

  • Para dejar de usar una imagen, use: docker rmi
  • Ejemplo: docker rmi wordpress:php7.1
  • No se puede eliminar una imagen si está en uso por algún contenedor.

Contenedores

  • Los contenedores son instancias de las imágenes que se ejecutan de forma aislada.

Listado

  • Para ver listado de contenedores, utilice docker container ls o docker ps
  • Se visualizará un listado vacío si no hay contenedores activos
  • Se puede usar el parámetro --all o -a para mostrar todos los contenedores.

Iniciar un Contenedor

  • Para iniciar un contenedor parado, use: docker container start
  • Ejecute: docker ps
  • Ejemplo: docker container start peaceful_murdock

Detener un Contenedor

  • Para detener un contenedor iniciado, use: docker container stop
  • Indique su id (ejemplo: 4bd76e08b07f ) o nombre.

Borrar un Contenedor

  • Para borrar un contenedor detenido, use: docker container rm
  • Indique su id (ejemplo: 4bd76e08b07f ) o nombre.
  • Al borrar un contenedor se elimina cualquier información que contenga.

Ejecutar Comandos Dentro de un Contenedor

  • Se puede usar docker run para ejecutar programas que están dentro de un contenedor.
  • Ejemplo: docker run --name ubuntu_bash --rm -i -t ubuntu bash
  • Las primeras versiones de Docker eran más limitadas, así que salieron comandos como docker start y docker stop, relacionados con los contenedores.

Persistiendo Datos

  • Por defecto, un contenedor está aislado y al eliminarlo se eliminan sus archivos.
  • Para almacenar datos dentro de un contenedor sin perderlos se puede hacer:
  • A través de volúmenes
  • Montando un directorio de la máquina anfitrión
  • Almacenándolo en la memoria del sistema (se perderían al reiniciar)
  • Lo normal es usar volúmenes.

Crear Volumen

  • Para crear un volumen donde guardar la información para blog WordPress:
  • Comando: docker volume create
  • Ejemplo: docker volume create wordpress-db

Listar Volúmenes

- Para visualizar todos los volúmenes disponibles:
  • Comando: docker volume ls
  • Ejemplo de resultado:
DRIVER      VOLUME NAME
local       wordpress-db

Visualizar Volúmenes

  • Los volúmenes se crean en un directorio del sistema, no es recomendable acceder a él mientras haya contenedor usándolo.
  • Para ver metadatos volumen usa.
  • Comando: docker volume inspect

Borrar Volúmenes

  • Como todos los objetos de Docker, se pueden borrar volúmenes
  • Solamente se realiza si el volumen no está en uso
  • Usar mucha precaución porque se perderían todos los datos que contenga
  • Comando: docker volume rm

Levantar WordPress con Docker

  • Para crear un blog con WordPress requiere de una BBDD
  • Se comenzará por crear la base de datos para luego crear el contenedor del blog.

Crear un Contenedor con MariaDB

  • WordPress soporta los motores relaciones MySQL y MariaDB
  • Para crear la BBDD se utiliza el volumen docker run -d --name wordpress-db \
  • -mount source=wordpress-db,target=/var/lib/mysql \
  • e MYSQL_ROOT_PASSWORD=secret \
  • e MYSQL_DATABASE=wordpress \
  • e MYSQL_USER=manager \
  • e MYSQL_PASSWORD=secret mariadb:10.3.9
    • La imagen de MariaDB se descargue si no lo está y se inicie el contenedor.
  • No se usa el parámetro -p para publicar puertos
  • Agregar parámetro -d para que se ejecute como un proceso en segundo plano, para no pararlo por accidente con Control+C.
  • Variables con -e que configuran la BBDD, un usuario y configuración de contraseña
  • Se recomienda mirar en el registro de Docker la imagen oficial de MariaDB
  • El parámetro --mount enlaza el volumen al directorio /var/lib/mysql del contenedor, donde se guardan los datos de MariaDB.

Creando Nuestro Blog

  • Se conectará WordPress con la BBDD
  • Es necesario poder editar los ficheros de las plantillas, por lo que se necesita montar el directorio del contenedor con la cuenta del usuario de la máquina anfitrión
  • Para crear el espacio de trabajo se usa el siguiente comando: mkdir -p ~/Sites/wordpress/target && cd ~/Sites/wordpress
  • Para arrancar el contenedor se usa el siguiente comando:
docker run -d --name wordpress \
- -link wordpress-db:mysql \
- -mount type=bind,source="$(pwd)"/target,target=/var/www/html \
- e WORDPRESS_DB_USER=manager \
- e WORDPRESS_DB_PASSWORD=secret \
- p 8080:80 \
wordpress:4.9.8
  • Al terminar, se accede al http://localhost:8080/ y ahora se podrá acabar el proceso de instalación del WordPress
    • Listar directorio target, comprueba que están todos los archivos de la instalación accesibles fuera directorio

Levantar un WordPress con Docker Compose

  • El cliente de Docker es problemático para crear contenedores, así como vinculados entre ellos.
  • Para automatizar la creación, inicio y parada de un grupo de contenedores, Docker proporciona una herramienta Docker Compose.
  • Para detener y borrar lo creado se usa:
docker container stop wordpress wordpress-db
docker container rm wordpress wordpress-db
docker volume rm wordpress-db

Docker Compose

  • Compose es una herramienta para definir y ejecutar aplicaciones multi-contenedor.
  • Se crea e inicia todos los servicios con un comando
  • Los casos de usos más habituales para docker-compose:
  • Entornos de desarrollo
  • Entornos de test automáticos (integración continua)
  • Despliegue en host individuales (no clusters)
  • Compose tiene comandos para manejar ciclo de vida de aplicación
  • Iniciar, detener y rehacer servicios.
  • Ver estado de servicios.
  • Visualizar los logs.
  • Ejecutar comando en un servicio.

Creación de Contenedores Automatizada

  • Se crea fichero llamado docker-compose.yaml con el siguiente contenido:
version: '3'
services:
  db:
    image: mariadb:10.3.9
    volumes:
    data:/var/lib/mysql
    environment:
    MYSQL_ROOT_PASSWORD=secret
    MYSQL_DATABASE=wordpress
    MYSQL_USER=manager
    MYSQL_PASSWORD=secret
  web:
    image: wordpress:4.9.8
    depends_on:
          db
    volumes:
    ./target:/var/www/html
    environment:
    WORDPRESS_DB_USER=manager
    WORDPRESS_DB_PASSWORD=secret
    WORDPRESS_DB_HOST=db
    ports:
    8080:80
  • Los ficheros de Compose se dividen en tres secciones: services, volumes y networks e indican un número de versión.
  • Realiza prácticamente lo mismo que el cliente de docker de forma automática.
  • Con este fichero podemos hacer lo mismo que en el capítulo anterior pero con la ventaja de describir todos los requisitos en un solo archivo

Iniciar Servicios

-  Se usa el siguiente aplicación: `docker-compose up -d`
  • Al arrancar la aplicación, Compose informa de los servicios levantando la
  • El parámetro -d es similar al docker run, permite levantar servicios en segundo plano.
docker-compose up -d
Creating network "wordpress_default" with the default driver
Creating volume "wordpress_data" with local driver
Creating wordpress_db_1 ... done
Creating wordpress_web_1 ... done

Detener Servicios

  • Se detiene con: docker-compose stop

Borrar Servicios

  • Se borran con: docker-compose down
  • Este comando borra los contenedores pero no los volúmenes
  • Para borrar con volúmenes: docker-compose down -v

Estructura de la Configuración

  • Estructura de la parte de configuración version: '3'
  • Compose con frecuencia es actualizado por lo que el archivo va adquiriendo funcionales.
  • La versión 3 es la última actualización, mirar la página de referencia
  • Datos volátiles de las aplicaciones en volúmenes, en este caso, se utiliza data.

Crear Imágenes Propias

  • Se usan imágenes de terceros
  • Docker permite crear imágenes propias, aunque se puede partir desde cero
  • Es fácil crear la imagen en base a una ya existente
  • Se puede partir de una imagen base de un lenguaje de programación o de una distinta distribución
  • Se debe guardar dentro un build context, un directorio
  • El directorio contiene los archivos para construir la imagen

Mi Primer Dockerfile

  • Los archivos Dockerfile contienen las instrucciones crean las imágenes
  • Se deben guardar en un build content

Trucos

Portainer

  • Es un gestor de contenedores con interface web
  • Hay que guardar el docker-compose.yaml en ~/Sites/portainer
  • El fichero queda de la siguiente forma:
version: '2'
services:
    portainer:
      image: portainer/portainer
      command: -H unix:///var/run/docker.sock
      volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - portainer_data:/data
      ports:
          - 127.0.0.1:9000:9000
volumes:
    portainer_data:
  • Para ejecutar el contenedor: docker-compose up -d

Limpieza

  • Para borrar objetos en desuso: docker system prune
  • Para borrar volúmenes no asociados con un contenedor: docker volume rm $(docker volume ls -q -f "dangling=true")
  • Para eliminar contenedores que han finalizado: docker rm $(docker ps -q -f "status=exited")
  • Para borrar imágenes sin etiquetar: docker image rmi $(docker images -q -f "dangling=true")
Copias de seguridad
  • Crear una copia de seguridad se realiza mediante:
docker run --rm -v /tmp:/backup \
- -volumes-from <container-name> \
busybox tar -cvf /backup/backup.tar <path-to-data>
  • La restauración se realiza:
docker run --rm -v /tmp:/backup \
- -volumes-from <container-name> \
busybox tar -xvf /backup/backup.tar <path-to-data>

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

UD06 Teoría PDF

Description

Pon a prueba tus conocimientos sobre Docker, incluyendo contenedores, imágenes y el demonio de Docker. Aprende sobre Docker CE, Docker Compose y comandos esenciales para administrar contenedores. Este cuestionario cubre desde los conceptos básicos hasta la gestión de usuarios y la instalación de Docker en diferentes sistemas operativos.

More Like This

ESD Week 3
6 questions

ESD Week 3

ImaginativeRisingAction avatar
ImaginativeRisingAction
Docker en Virtualisatie Quiz - Les 10
32 questions
Docker Overview and Structure
5 questions

Docker Overview and Structure

MagnanimousCloisonnism avatar
MagnanimousCloisonnism
Conceptos básicos de Docker
30 questions

Conceptos básicos de Docker

EffortlessAntigorite5305 avatar
EffortlessAntigorite5305
Use Quizgecko on...
Browser
Browser