¿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!!!
Docker rm no ELIMINA el contenedor, simplemente elimina el proceso, la información de la base de datos que trabajamos aún está montada en el volumen que creamos previamente.
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