Taller Docker - Almacenamiento y Redes
Almacenamiento
Volúmenes docker
- Crearemos un volumen docker que se llame miweb.
docker volume create miweb
Y mostramos que el volumen se ha creado correctamente.
docker volume ls
- Crea un contenedor desde la imagen php:7.4-apache donde montes en el directorio /var/www/html el volumen docker que has creado.
docker run -d --name miweb -p 80:80 -v miweb:/var/www/html php:7.4-apache
- Utiliza el comando docker cp para copiar un fichero index.html (donde aparece tu nombre) en el directorio /var/www/html.
<!DOCTYPE html>
<html>
<body>
<h1>Nombre: Maria Jesus</h1>
<h2>Prueba de docker</h2>
</body>
</html>
docker cp index.html miweb:/var/www/html/index.html
- Accede al contenedor desde el navegador para ver la información ofrecida por el fichero index.html.
http://localhost
- Borra el contenedor
docker rm -f miweb
- Crea un nuevo contenedor y monta el mismo volumen como en el ejercicio anterior.
docker run -d --name miweb -p 80:80 -v miweb:/var/www/html php:7.4-apache
- Accede al contenedor desde el navegador para ver la información ofrecida por el fichero index.html. ¿Seguía existiendo ese fichero?
http://localhost:8080
- El fichero sigue existiendo porque se ha creado un volumen docker que se ha montado en el contenedor.
Bind Mounts
- Crea un directorio en tu host y dentro crea un fichero index.html (donde aparece tu nombre).
mkdir -p /home/maria/Documentos/2ASIR/IAW/Docker
cd /home/maria/Documentos/2ASIR/IAW/Docker
touch index.html
- Crea un contenedor desde la imagen php:7.4-apache donde montes en el directorio /var/www/html el directorio que has creado por medio de bind mount.
docker run -d --name miweb -p 80:80 -v /home/maria/Documentos/2ASIR/IAW/Docker/index.html:/var/www/html/index.html php:7.4-apache
- Accede al contenedor desde el navegador para ver la información ofrecida por el fichero index.html.
http://localhost:8080
- Modifica el contenido del fichero index.html en tu host y comprueba que al refrescar la página ofrecida por el contenedor, el contenido ha cambiado.
<!DOCTYPE html>
<html>
<body>
<h1>Nombre: Maria Jesus</h1>
<h2>Prueba Bind Mounts</h2>
</body>
</html>
- Borra el contenedor
docker rm -f miweb
- Crea un nuevo contenedor y monta el mismo directorio como en el ejercicio anterior.
docker run -d --name miweb -p 80:80 -v /home/maria/Documentos/2ASIR/IAW/Docker/index.html:/var/www/html/index.html php:7.4-apache
- Accede al contenedor desde el navegador para ver la información ofrecida por el fichero index.html. ¿Se sigue viendo el mismo contenido?
http://localhost:8080
- El contenido sigue siendo el mismo porque se ha montado el directorio en el contenedor.
Redes
Despliegue de Nextcloud + mariadb/postgreSQL
Vamos a desplegar la aplicación nextcloud con una base de datos. Para ello sigue los siguientes pasos:
Crea una red de tipo bridge para que los contenedores se puedan comunicar entre ellos.
docker network create nextcloud-net
Crea el contenedor de la base de datos conectado a la red que has creado. La base de datos se debe configurar para crear una base de dato y un usuario. Además el contenedor debe utilizar almacenamiento para guardar la información.
docker run -d --name nextcloud-db -e MYSQL_ROOT_PASSWORD=nextcloud -e MYSQL_DATABASE=nextcloud -e MYSQL_USER=nextcloud -e MYSQL_PASSWORD=admin -v nextcloud-db:/var/lib/mysql --network nextcloud-net mariadb
A continuación, siguiendo la documentación de la imagen nextcloud, crea un contenedor conectado a la misma red, e indica las variables adecuadas para que se configure de forma adecuada y realice la conexión a la base de datos. El contenedor también debe ser persistente usando almacenamiento.
docker run -d --name nextcloud -p 80:80 -e MYSQL_DATABASE=nextcloud -e MYSQL_USER=nextcloud -e MYSQL_PASSWORD=admin -e MYSQL_HOST=nextcloud-db -v nextcloud:/var/www/html --network nextcloud-net nextcloud
Accede a la aplicación usando un navegador web.
http://localhost:8080