Prerequisits: conèixer Docker
ATENCIÓ: Els noms dels equips hosts al VirtualBox, el nom del sistema quan instal·leu, els noms de l'usuari, equip, etc. han de ser el vostre per a que a les captures es pugui veure.
Convertiu el fitxer Markdown en pdf abans de lliurar la pràctica, i afegiu també la carpeta d'imatges amb el document .md en un sol .zip
Teniu l'exercici a fer al final d'aquest enunciat. Llegiu primer tot el document abans de començar la pràctica.
L'objectiu d'aquesta pràctica és començar a treballar amb múltiples contenidors interconnectats amb serveis estàndard.
Podem iniciar múltiples contenidors amb imatges ja preparades al DockerHub. Per exemple
sudo docker search apache sudo docker search wordpress sudo docker search mysql
Podem muntar un contenidor amb un servidor Web i una aplicació Web (WordPress) i un altre contenidor amb un servidor de BD (MariaDB).
Seguint les instruccions de la pàgina d'ajuda de la imatge de Wordpress (https://hub.docker.com/_/wordpress) i de MySQL (https://hub.docker.com/_/mariadb), caldrà iniciar primer el contenidor de la BD i després el del WP (en aquest ordre ja que l'aplicació Wordpress necessita que la BD estigui engegada abans):
$ docker run --name mi-sql --network xarxa_dades -d -e MYSQL_DATABASE=wp-db -e MYSQL_USER=wp-user -e MYSQL_PASSWORD=pass -e MYSQL_RANDOM_ROOT_PASSWORD='1' -v wp-db:/var/lib/mysql mariadb:latest $ docker run --name mi-wordpress --network xarxa_dades -d -e WORDPRESS_DB_HOST=mi-sql -v web:/var/www/html -e WORDPRESS_DB_NAME=wp-db -e WORDPRESS_DB_USER=wp-user -e WORDPRESS_DB_PASSWORD=pass -p 8081:80 wordpress:latest
Observa que hem posat volums per als directoris dels contenidors servidors on es guarden dades que es modifiquen quan funcionen els serveis
Per accedir al Wordpress creat, com ja sabeu apuntem al host local (físic) posant al navegador http://localhost:8080
Podem veure els logs dels contenidors, per si alguna cosa falla, fent:
sudo docker logs -f mi-sql sudo docker logs -f mi-wordpress
Podem accedir a la BD des dels propis contenidors (des del contenidor del WP o localment al contenidor de la BD) executant un client de mysql amb la comanda exec de Docker:
// des del contenidor que te Wordpress (cal accés remot i per això especifiquem // el host a la comanda mycli amb -h) sudo docker exec -ti mi-wordpress bash # apt update # apt install mycli # mycli -hmi-sql --user=exampleuser --password exampledb
// o bé des del contenidor que té la base de dades sudo docker exec -ti mi-sql mysql --user=exampleuser --password exampledb
Podem crear un fitxer docker-compose per a engegar els serveis automàticament i en seqüència ordenada. D'això se'n diu «orquestrar». Cal instal·lar primer el docker-compose
https://docs.docker.com/compose/install/
El fitxer docker-compose el podeu crear a partir de:
Es guardarà en un fitxer docker-compose.yml (en format yaml). Observeu que cada paràmetre del docker run té les seves directives equivalents:
version: '3.3' services: mariadb: image: 'mariadb:latest' container_name: mi-sql restart: always environment: - MYSQL_DATABASE=wp-db - MYSQL_USER=wp-user - MYSQL_PASSWORD=pass - MYSQL_RANDOM_ROOT_PASSWORD=1 volumes: - 'wp-db:/var/lib/mysql' wordpress: depends_on: - mariadb image: 'wordpress:latest' container_name: mi-wordpress restart: always environment: - WORDPRESS_DB_HOST=mi-sql - WORDPRESS_DB_NAME=wp-db - WORDPRESS_DB_USER=wp-user - WORDPRESS_DB_PASSWORD=pass volumes: - 'web:/var/www/html' ports: - '8081:80' volumes: wp-db: web:
Al directori on s'ha creat el fitxer docker-compose.yml executem «docker-compose up». Quan volem aturar-ho piquem CTRL+C.
Un cop arrencada la aplicació multicontainer amb docker-compose, ja podrem accedir al WordPress a
http://localhost:8081
ATENCIÓ: Vigileu per que no és el mateix arrencar el contenidor per a fer la instal·lació que arrencar el contenidor quan ja hi ha dades prèvies que s'ha d'utilitzar. Assegureu-vos bé que quan torneu a engegar contenidors, s'enllacen a les dades que havia abans. Si no, cada vegada que inicieu contenidors, s'iniciaria la instal·lació de mediawiki o Joomla.
NOTA: Recordeu que heu de posar el vostre nom a tots els objectes que creeu i configureu a les ordres docker run i el docker-compose. També cal que es vegi el vostre nom en el Mediawiki i Joomla que creeu, així com plantilles i fotografies per personalitzar la web.
1. Arrenca dos contenidors per poder tenir un lloc mediawiki (busca a DockerHub), de manera que:
2. Anem a comprovar que la persistència és correcta. Mata (kill) i destrueix (rm) els dos contenidors amb els que heu configurat el mediawiki. Mostra que no estan. Crea dos contenidors nous de manera que s'aprofitin les dades que hi ha a la BD de dades creada anteriorment i el fitxer de configuració del mediawiki (posa'l en un volum extra). Ha de veure's el que ja havíeu fet.
3. Crea un fitxer docker-compose per a iniciar i aturar els serveis d'una sola tacada. Agafa la informació de les pàgines d'ajuda dels contenidors de Wordpress, Mediwiki i Joomla.