¿Hablemos de volumenes – Son útiles en docker?

¿Qué son los volúmenes?

  • Nos permiten manejar datos persistentes en nuestros contenedores.
  • Solamente Docker tiene acceso a los datos (con excepción del usuario root).
  • Podemos trabajar de manera segura sin perder nuestros datos asegurando que docker sea el único responsable de estos mismos.

Para crear un volumen lo haremos de la siguiente forma:

$ docker volume create proyecto

Para listar los volumenes creados:

$ docker volume list

Supongamos que estamos trabajando con un contenedor que contiene el servidor web apache. Si queremos agregar el volumen a nuestro contenedor basta con agregar el parámetro mount y dst.

$ docker run --name apache2 -d -p 8080:80 --mount src=proyecto,dst=/usr/local/apache2/htdocs/ httpd

Al ejecutar el comando vamos a tener trabajando el contenedor llamado apache2 que es un alias al contenedor “httpd” descargado previamente.

A este contenedor le pasamos dos parámetros nuevos:

  • “–mount src=proyecto”
    • El nombre del volumen en el que vamos a montarlo
  • “dst=/usr/local/apache2/htdocs/”
    • Es el destino donde se va a montar el contenedor de docker para trabajar nuestros archivos locales. Este destino lo podemos buscar en la documentación oficial de cada contenedor.

Para entrar al contenedor lo podemos hacer de la manera tradicional usando el comando exec:

$ docker exec -it apache2 bash

Con este comando corremos un terminal bash dentro de nuestro contenedor para trabajar con nuestros archivos.

Para acceder al contenido interno de un contenedor vamos a ejecutar el siguiente comando para verificar el espacio físico donde está almacenando su volumen:

$ docker volume inspect <nombre_del_volumen>

De esta forma podremos saber la ruta exacta donde podremos cargar nuestra aplicación ubicado en la sección: “Mountpoint”

  • "Mountpoint": "/var/lib/docker/volumes//_data",

Por defecto docker siempre usa el directorio /var/lib/docker/ para trabajar.

Vamos a descargar la última imagen oficial de MySQL desde docker hub. Para eso ejecutamos:

$ docker pull mysql

Ahora que tenemos mysql instalado en docker vamos a crear un volumen. En este caso vamos a usar el mismo creado previamente.

$ docker volume create proyecto_mysql

Verificamos que se creo con:

$ docker volume ls

Lanzamos el contenedor:

docker run -d -p 33060:3306 --name mysql_proyecto -e MYSQL_ROOT_PASSWORD=1234 --mount src=mysql_proyecto,dst=/var/lib/mysql mysql

Para acceder al contenedor ejecutamos:

$ docker exec -it mysql_proyecto mysql -p

Dentro del contenedor podemos trabajar como si estuviéramos en un mysql tradicional.

Al terminar de trabajar es súper importante detener el contenedor y eliminar el proceso que ejecutamos si no lo vamos a volver a usar:

$ docker stop mysql_proyecto
$ docker rm mysql_proyecto

IMPORTANTE!!!

Luego de trabajar siempre es importante:

$ docker stop nombre_del_contenedor

Para detener el contenedor

$ docker start nombre_del_contenedor

Para volverlo a iniciar

Nunca olvidarnos que el volumen mantiene los datos hasta que es eliminado.

Deja un comentario

Bienvenidos 🙂

Bienvenidos a mi página web personal. Mi nombre es Luis, me gusta enseñar, programar y tomar litros y litros de café.

En esta web vas a encontrar materiales sobre educación, programación, Gnu/Linux, software libre y mucho más.

Esta web busca brindar información sobre las asignaturas que imparto en DGETP-UTU, así como proyectos personales y otras cosas.

Gracias por ser parte de esta hermosa comunidad.

Formas de contacto

Descubre más desde Profeluisfagundez

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo