Ejemplo de volumen en Docker

Unas semanas atrás te estuve contando cómo empezar con Docker en una serie de artículos. Esta es una práctica que suelo seguir bastante a menudo, cuando tengo que aprender alguna tecnología, y normalmente es porque tiendo a olvidarme de lo que voy aprendiendo si estoy con otras tantas cosas a la vez. Hoy he tenido que recordarme a mí misma algunos conceptos y quería dejarte aquí un script que me he montado para demostrar cómo funcionan los volúmenes de Docker, que ya te expliqué en este otro post.

#Create a docker container with a volume assigned
docker run -d -p 5432:5432 -v postgres-data:/var/lib/postgresql/data --name mypostgres postgres

#Access to that container
docker exec -it mypostgres sh

#Create a postgress db
createdb -U postgres mydb

#Access to my postgress db
psql -U postgres mydb

#Create a table
CREATE TABLE products (id int, name varchar(100));

#Create a product into my table
INSERT INTO products (id, name) VALUES (1, 'Wheel');

#Exit postgress client
\q

#Exit container
exit

#Delete mypostgres container
docker rm -f mypostgres

#Create a new container with the same volume attached
docker run -d -p 5432:5432 -v postgres-data:/var/lib/postgresql/data --name mypostgres2 postgres

#Access to my new container
docker exec -it mypostgres2 sh

#Access to the existing database
psql -U postgres mydb

#Launch a query
SELECT * from products;

#Exit postgress client
\q

#Exit container
exit

#Delete the second container
docker rm -f mypostgres2

#Delete the volume
docker volume rm postgres-data

Como ves, el script crea un contenedor con la imagen de postgres, el cual tiene asociado un volumen que se creará al vuelo cuando ejecutes el comando. Crea una base de datos, crea una tabla y añade un registro a la misma. Después elimino el contenedor pero esto no hace que el volumen desaparezca, lo cual es nuestro objetivo, que es donde está mi base de datos. Creo un segundo contenedor al cual asocio este volumen. Accedo de nuevo a la base de datos que se creo con del primer contenedor y hago una consulta para comprobar que los datos siguen ahí. Finalmente elimino el segundo contenedor y el volumen.

Nota: Desde hace bastante tiempo uso Visual Studio Code para todo. También lo uso para estos scripts y, haciendo uso del terminal integrado, voy lanzando cada una de las líneas del archivo de una forma bastante cómoda. Puedes configurar la ejecución del texto que tengas seleccionado a través de Preferences > Keyboard Shortcuts y asignar a la acción Terminal: Run Selected Text In Active Terminal una combinación de teclas.

Imagen de portada por kyohei ito.

¡Feliz fin de semana!