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, ahora usando la opción --mount
:
$ docker rm -f my-apache-app
my-apache-app
$ docker run -d --name my-apache-app --mount type=bind,src=/home/usuario/web,dst=/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. sin embargo, si hacemos un bind mount con la opción --mount
nos dará un error.