bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


Barra lateral

ASIX Administració de Sistemes Informàtics i Xarxes
Tots els mòduls del cicle
MP01 Implantació de sistemes operatius
Totes les UFs del modul
MP02 Gestió de bases de dades
Totes les UFs del modul
MP03 Programació bàsica
Totes les UFs del modul
MP04 Llenguatges de marques i sistemes de gestió d'informació
Totes les UFs del modul
MP05 Fonaments de maquinari
Totes les UFs del modul
MP06 Administració de sistemes operatius
Totes les UFs del modul
MP07 Planificació i administració de xarxes
Totes les UFs del modul
MP08 Serveis de xarxa i Internet
Totes les UFs del modul
MP09 Implantació d'aplicacions web
Totes les UFs del modul
MP10 Administració de sistemes gestors de bases de dades
Totes les UFs del modul
MP11 Seguretat i alta disponibilitat
Totes les UFs del modul
MP12 Formació i orientació laboral
Totes les UFs del modul
MP13 Empresa i iniciativa emprenedora
Totes les UFs del modul
MP14 Projecte
Totes les UFs del modul
DAM Desenvolupament d’aplicacions multiplataforma
Tots els mòduls del cicle
MP01 Sistemes informàtics
Totes les UFs del modul
MP02 Bases de dades
Totes les UFs del modul
MP03 Programació bàsica
Totes les UFs del modul
MP04 Llenguatges de marques i sistemes de gestió d'informació
Totes les UFs del modul
MP05 Entorns de desenvolupament
Totes les UFs del modul
MP06 Accés a dades
Totes les UFs del modul
MP07 Desenvolupament d’interfícies
Totes les UFs del modul
MP08 Programació multimèdia i dispositius mòbils
Totes les UFs del modul
MP09 Programació de serveis i processos
Totes les UFs del modul
MP10 Sistemes de gestió empresarial
Totes les UFs del modul
MP11 Formació i orientació laboral
Totes les UFs del modul
MP12 Empresa i iniciativa emprenedora
Totes les UFs del modul
MP13 Projecte de síntesi
Totes les UFs del modul
MPDual Mòdul Dual / Projecte
DAW Desenvolupament d’aplicacions web
Tots els mòduls del cicle
MP01 Sistemes informàtics
Totes les UFs del modul
MP02 Bases de dades
Totes les UFs del modul
MP03 Programació
Totes les UFs del modul
MP04 Llenguatge de marques i sistemes de gestió d’informació
Totes les UFs del modul
MP05 Entorns de desenvolupament
Totes les UFs del modul
MP06 Desenvolupament web en entorn client
Totes les UFs del modul
MP07 Desenvolupament web en entorn servidor
Totes les UFs del modul
MP08 Desplegament d'aplicacions web
Totes les UFs del modul
MP09 Disseny d'interfícies web
Totes les UFs del modul
MP10 Formació i Orientació Laboral
Totes les UFs del modul
MP11 Empresa i iniciativa emprenedora
Totes les UFs del modul
MP12 Projecte de síntesi
Totes les UFs del modul
SMX Sistemes Microinformàtics i Xarxes
Tots els mòduls del cicle
MP01 Muntatge i manteniment d’equips
Totes les UFs del modul
MP02 Sistemes Operatius Monolloc
Totes les UFs del modul
MP03 Aplicacions ofimàtiques
Totes les UFs del modul
MP04 Sistemes operatius en xarxa
Totes les UFs del modul
MP05 Xarxes locals
Totes les UFs del modul
MP06 Seguretat informàtica
Totes les UFs del modul
MP07 Serveis de xarxa
Totes les UFs del modul
MP08 Aplicacions Web
Totes les UFs del modul
MP09 Formació i Orientació Laboral
Totes les UFs del modul
MP10 Empresa i iniciativa emprenedora
Totes les UFs del modul
MP11 Anglès
Totes les UFs del modul
MP12 Síntesi
Totes les UFs del modul
CETI Ciberseguretat en Entorns de les Tecnologies de la Informació
Tots els mòduls del cicle
CiberOT Ciberseguretat en Entorns d'Operació
Tots els mòduls del cicle
docker-multicontainer

Docker multicontainer

Prerequisits: conèixer Docker

REPTE: Projectes Docker Multicontenidor

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.

Referències i ajuda

Objectius

L'objectiu d'aquesta pràctica és començar a treballar amb múltiples contenidors interconnectats amb serveis estàndard.

Introducció

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

  • La Base de dades de WordPress al directori del contenidor «mi-sql» /var/lib/mysql es guarda al volum «wp-db».
  • El directori amb contingut web estàtic i dinàmic, potser directoris de «upload» on els usuaris pugen dades contingut tot al directori /var/www/html del contenidor «mi-wordpress», es guarda al volum «web».
  • Podríem també guardar en un altre volum els directoris i fitxers de configuració del contenidor que necessitem que persisteixin després de la mort dels contenidors.

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

Repte: Projecte multicontenidor Mediawiki i Joomla (enunciat).

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.

Mediawiki

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:

  • La BD es guardi en un volum.
  • També els directoris on mediawiki guarda les dades que els usuaris pugen al servidor.
  • Configura amb el teu nom i pàgina d'inici el Mediawiki (Que es vegi clarament que és el teu lloc particular, posa alguna imatge pròpia).



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.

docker-multicontainer.txt · Darrera modificació: 2022/08/02 23:23 per pablo_jose_tome_mansilla