Link Search Menu Expand Document

Asociando almacenamiento a los contenedores: bind mount

Ejemplo: montando directorios usando bind mount

En este caso vamos a crear un directorio en el sistema de archivo del host, donde vamos a crear un fichero index.html:

$ mkdir web
$ cd web
/web$ echo "<h1>Hola</h1>" > index.html

Y podemos montar ese directorio en un contenedor, en este caso usamos la opción -v:

$ docker run -d --name my-apache-app -v /home/usuario/web:/usr/local/apache2/htdocs -p 8080:80 httpd:2.4
8de025f6ff4d4b8a5a57d10a9cbb283b103209f358c43148a4716a33a404e208

Y comprobamos que realmente estamos sirviendo el fichero que tenemos en el directorio que hemos creado.

$ curl http://localhost:8080
<h1>Hola</h1>

Eliminamos el contenedor y volvemos a crear otro con el directorio montado:

$ docker rm -f my-apache-app 
my-apache-app

$ docker run -d --name my-apache-app -v /home/usuario/web:/usr/local/apache2/htdocs -p 8080:80 httpd:2.4
1751b04b0548217d7faa628fd69c10e84c695b0e5cc33b482df2c04a6af83292

$ curl http://localhost:8080
<h1>Hola</h1>

Además podemos comprobar que podemos modificar el contenido del fichero aunque este montado en el contenedor:

$ echo "<h1>Adios</h1>" > web/index.html 
$ curl http://localhost:8080
<h1>Adios</h1>

Por último, indicar que si nuestra carpeta origen no existe y hacemos un bind mount con -v, esa carpeta se creará pero lo que tendremos en el contenedor es una carpeta vacía.