Diferència entre revisions de la pàgina «Pr. Creació i desplegament d'un contenidor amb Docker»

De wikijoan
Salta a la navegació Salta a la cerca
(Es crea la pàgina amb «=Referència= *https://ioc.xtec.cat/materials/FP/Recursos/fp_daw_m08_/web/fp_daw_m08_htmlindex/index.html Concretament: *https://ioc.xtec.cat/materials/FP/Recursos/fp...».)
 
 
(Hi ha 4 revisions intermèdies del mateix usuari que no es mostren)
Línia 5: Línia 5:
 
*https://ioc.xtec.cat/materials/FP/Recursos/fp_daw_m08_/web/fp_daw_m08_htmlindex/WebContent/u3/a1/continguts.html
 
*https://ioc.xtec.cat/materials/FP/Recursos/fp_daw_m08_/web/fp_daw_m08_htmlindex/WebContent/u3/a1/continguts.html
  
Anirem i realitzarem l'apartat:
+
La creació i el desplegament d'un docker està explicat en l'apartat:
 
*1.1.3: Creació i desplegament d'un contenidor amb Docker
 
*1.1.3: Creació i desplegament d'un contenidor amb Docker
 +
=Creació del docker=
 +
'''NOTA''': L'explicació que ve a continuació és seguir fil per randa els apunts de la IOC. S'ha provat en una màquina Linux, i també en una màquina Windows.
 +
 +
Dins del directori de treball, creem la carpeta ''docker/'', i a dins la carpeta ''src/''.
 +
<pre>
 +
<?php
 +
echo "hola món";
 +
?>
 +
</pre>
 +
Anem a dockeritzar aquest script, en el context d'una aplicació web que funciona dins d'un servidor web Apache.
 +
 +
Cerquem a Google el ''docker oficial de PHP''
 +
*https://hub.docker.com/_/php?tab=tags
 +
Agafem un tag que contingui apache, per exemple: 7.4-apache (podem utilitzar el cercador de ''tags''). Si volguéssim descarregar aquest docker faríem senzillament:
 +
<pre>
 +
$ docker pull php:7.4-apache
 +
</pre>
 +
I ja tindríem un Apache amb funcionalitat PHP.
 +
 +
Però anem a configurar el nostre docker. Per fer-ho, creem el fitxer de configuració ''Dockerfile'' (compte usuaris de Windows, aquest fitxer no té extensió). És un fitxer de text (sense extensió), que l'obrim amb qualsevol editor bàsic. Conté tan sols 3 línies:
 +
<pre>
 +
FROM php:7.4-apache
 +
COPY src/ /var/www/html
 +
EXPOSE 80
 +
</pre>
 +
La comanda ''COPY'' és perquè volem copiar el contingut del nostre directori local ''src/'' a dins de la carpeta ''/var/www/html'', que ja saps que és el directori per defecte de l'Apache per publicar pàgines.
 +
 +
Ja podem ''muntar'' el docker:
 +
<pre>
 +
$ docker build -t hola-mon .
 +
 +
$ docker image ls
 +
REPOSITORY            TAG                IMAGE ID            CREATED            SIZE
 +
hola-mon              latest              5b2cebdbd18f        5 minutes ago      469MB
 +
php                    7.4-apache          4d3d9fe4d89c        8 days ago          469MB
 +
</pre>
 +
Fixem-nos bé que no hem hagut d'instal·lar cap Linux ni Apache ni PHP. Tota aquesta funcionalitat ja ens ve de la imatge de la qual hem partit (''php:7.4-apache'').
 +
 +
I ara podem arrencar:
 +
<pre>
 +
docker run -p 8080:80 hola-mon
 +
 +
http://localhost:8080/
 +
Forbidden
 +
http://localhost:8080/hola_mon.php
 +
</pre>
 +
sí que funciona
 +
 +
El professor ha fet servir el 8080 perquè el port 80 el té ocupat per un Apache local. Tú també hauràs de tenir present si tens el XAMP funcionant o no, per veure si hi ha algun servei que estigui ocupant el port 80.
 +
 +
Per aturar el docker n'hi ha prou a fer Ctrl-C o Ctrl-D en la consola per tal d'aturar el procés.
 +
'''NOTA''': en cas de què vulguis esborrar una imatge docker has de fer:
 +
<pre>
 +
$ docker rmi -f 5b2cebdbd18f
 +
</pre>
 +
És molt útil mapejar la teva carpeta local amb la carpeta del docker, amb l'opció ''-v'':
 +
<pre>
 +
$ docker run -p 8080:80 -v /home/joan/DAW_M08_DESPL/UF3/docker/src/:/var/www/html/ hola-mon
 +
</pre>
 +
I aleshores podem modificar el script ''hola_mon.php'', i automàticament quan refresquem el navegador veiem els canvis que hem realitzat.
 +
 +
'''NOTA''' usuaris Windows. Per mapejar amb Windows la idea és la mateixa (però recorda que és una mala idea utilitzar directoris amb espais en blanc):
 +
<pre>
 +
$ docker run -p 8080:80 -v C:\users\joan\docker\:/var/www/html/ hola-mon
 +
</pre>
 +
 +
=Pujar el docker a dockerhub=
 +
T'has de registrar amb un compte a:
 +
*https://hub.docker.com/
 +
que és l'espai al núvol on es guarden els dockers.
 +
 +
Des de la línia de comandes ens autentiquem:
 +
<pre>
 +
$ docker login
 +
Authenticating with existing credentials...
 +
...
 +
Login Succeeded
 +
</pre>
 +
El següent pas és etiquetar la imatge per pujar-la al repositori. (en comptes de ''joanillo'' has de posar el teu nom d'usuari, evidentment).
 +
<pre>
 +
$ docker tag 2f67228e9e34 joanillo/hola-mon:latest
 +
 +
$ docker image ls
 +
o bé
 +
$ docker images
 +
REPOSITORY            TAG                IMAGE ID            CREATED              SIZE
 +
joanillo/hola-mon      latest              2f67228e9e34        About a minute ago  469MB
 +
hola-mon              latest              2f67228e9e34        About a minute ago  469MB
 +
</pre>
 +
I ara ja podem pujar el nostre docker (etiquetat) al núvol:
 +
<pre>
 +
$ docker push joanillo/hola-mon:latest
 +
</pre>
 +
I ara podem anar al dockerhub i veure que el docker publicat i públic.
 +
*https://hub.docker.com/
 +
=Descarregar el docker public a local=
 +
Abans de descarregar-lo, primer eliminem el nostre docker local. Per fer-ho tenim les opcions ''rmi'' (''remove image'') i l'opció ''-f'' significa ''force'', que l'eliminarà encara que en aquell moment estigués arrencat.
 +
<pre>
 +
docker rmi -f 2f67228e9e34
 +
docker image ls (comprovem que no hi és)
 +
</pre>
 +
I ara ja el podem descarregar del núvol:
 +
<pre>
 +
$ docker pull joanillo/hola-mon
 +
 +
$ docker image ls
 +
REPOSITORY            TAG                IMAGE ID            CREATED            SIZE
 +
joanillo/hola-mon      latest              2f67228e9e34        21 minutes ago      469MB
 +
</pre>
 +
I ja el podem arrencar, igual que abans:
 +
<pre>
 +
$ docker run -p 8080:80 joanillo/hola-mon
 +
 +
o millor:
 +
$docker run -p 8080:80 -v /home/joan/DAW_M08_DESPL/UF3/docker/src/:/var/www/html/ joanillo/hola-mon
 +
</pre>
 +
 +
=Conclusions=
 +
Has desplegat una aplicació web ''contenidoritzada''. Qualsevol persona (el professor) pot descarregar-se aquesta aplicació i fer-la funcionar, sense haver d'instal·lar l'Apache, i sense cap problema de versions, amb la certesa de què funcionarà.
 +
=Tasques a realitzar=
 +
1. Segueix el procés del docker ''hola-mon''. Fes les següents captures de pantalla (amb evidències de què les has fet a la teva màquina):
 +
*llistat de contenidors creats a la teva màquina (abans d'esborrar-lo)
 +
*docker pujat al dockerhub (''núvol'').
 +
*llistat de contenidors després de descarregar-lo del dockerhub.
 +
 +
2. Crea el docker ''docker-pepet'', on ''pepet'' és el teu nom. Contindrà una aplicació PHP, amb la següent funcionalitat:
 +
*títol ''h2'' amb el teu nom
 +
*Implementaràs un exemple de funcions de cadena amb PHP, que pots agafar de: https://www.javatpoint.com/php-string-functions
 +
*Explicació (documentació) de l'exemple que has fet.
 +
 +
3. Enllaç del teu docker públic.
 +
 +
4. Feina pel professor: el professor descarregarà el teu docker i certificarà el seu funcionament.
 +
 +
=Entrega=
 +
Entregaràs en un pdf les captures de pantalla, comentaris i explicacions suficients, amb les evidències de què la pràctica l'has fet tu i en la teva màquina. El pdf contindrà l'enllaç al docker públic, i el professor certificarà de què funciona.
  
 
{{Autor}}, febrer 2022
 
{{Autor}}, febrer 2022

Revisió de 14:46, 11 feb 2022

Referència

Concretament:

La creació i el desplegament d'un docker està explicat en l'apartat:

  • 1.1.3: Creació i desplegament d'un contenidor amb Docker

Creació del docker

NOTA: L'explicació que ve a continuació és seguir fil per randa els apunts de la IOC. S'ha provat en una màquina Linux, i també en una màquina Windows.

Dins del directori de treball, creem la carpeta docker/, i a dins la carpeta src/.

<?php
echo "hola món";
?>

Anem a dockeritzar aquest script, en el context d'una aplicació web que funciona dins d'un servidor web Apache.

Cerquem a Google el docker oficial de PHP

Agafem un tag que contingui apache, per exemple: 7.4-apache (podem utilitzar el cercador de tags). Si volguéssim descarregar aquest docker faríem senzillament:

$ docker pull php:7.4-apache

I ja tindríem un Apache amb funcionalitat PHP.

Però anem a configurar el nostre docker. Per fer-ho, creem el fitxer de configuració Dockerfile (compte usuaris de Windows, aquest fitxer no té extensió). És un fitxer de text (sense extensió), que l'obrim amb qualsevol editor bàsic. Conté tan sols 3 línies:

FROM php:7.4-apache
COPY src/ /var/www/html
EXPOSE 80

La comanda COPY és perquè volem copiar el contingut del nostre directori local src/ a dins de la carpeta /var/www/html, que ja saps que és el directori per defecte de l'Apache per publicar pàgines.

Ja podem muntar el docker:

$ docker build -t hola-mon .

$ docker image ls
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
hola-mon               latest              5b2cebdbd18f        5 minutes ago       469MB
php                    7.4-apache          4d3d9fe4d89c        8 days ago          469MB

Fixem-nos bé que no hem hagut d'instal·lar cap Linux ni Apache ni PHP. Tota aquesta funcionalitat ja ens ve de la imatge de la qual hem partit (php:7.4-apache).

I ara podem arrencar:

docker run -p 8080:80 hola-mon 

http://localhost:8080/
Forbidden
http://localhost:8080/hola_mon.php

sí que funciona

El professor ha fet servir el 8080 perquè el port 80 el té ocupat per un Apache local. Tú també hauràs de tenir present si tens el XAMP funcionant o no, per veure si hi ha algun servei que estigui ocupant el port 80.

Per aturar el docker n'hi ha prou a fer Ctrl-C o Ctrl-D en la consola per tal d'aturar el procés. NOTA: en cas de què vulguis esborrar una imatge docker has de fer:

$ docker rmi -f 5b2cebdbd18f

És molt útil mapejar la teva carpeta local amb la carpeta del docker, amb l'opció -v:

$ docker run -p 8080:80 -v /home/joan/DAW_M08_DESPL/UF3/docker/src/:/var/www/html/ hola-mon

I aleshores podem modificar el script hola_mon.php, i automàticament quan refresquem el navegador veiem els canvis que hem realitzat.

NOTA usuaris Windows. Per mapejar amb Windows la idea és la mateixa (però recorda que és una mala idea utilitzar directoris amb espais en blanc):

$ docker run -p 8080:80 -v C:\users\joan\docker\:/var/www/html/ hola-mon

Pujar el docker a dockerhub

T'has de registrar amb un compte a:

que és l'espai al núvol on es guarden els dockers.

Des de la línia de comandes ens autentiquem:

$ docker login
Authenticating with existing credentials...
...
Login Succeeded

El següent pas és etiquetar la imatge per pujar-la al repositori. (en comptes de joanillo has de posar el teu nom d'usuari, evidentment).

$ docker tag 2f67228e9e34 joanillo/hola-mon:latest

$ docker image ls
o bé
$ docker images
REPOSITORY             TAG                 IMAGE ID            CREATED              SIZE
joanillo/hola-mon      latest              2f67228e9e34        About a minute ago   469MB
hola-mon               latest              2f67228e9e34        About a minute ago   469MB

I ara ja podem pujar el nostre docker (etiquetat) al núvol:

$ docker push joanillo/hola-mon:latest

I ara podem anar al dockerhub i veure que el docker publicat i públic.

Descarregar el docker public a local

Abans de descarregar-lo, primer eliminem el nostre docker local. Per fer-ho tenim les opcions rmi (remove image) i l'opció -f significa force, que l'eliminarà encara que en aquell moment estigués arrencat.

docker rmi -f 2f67228e9e34
docker image ls (comprovem que no hi és)

I ara ja el podem descarregar del núvol:

$ docker pull joanillo/hola-mon

$ docker image ls
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
joanillo/hola-mon      latest              2f67228e9e34        21 minutes ago      469MB

I ja el podem arrencar, igual que abans:

$ docker run -p 8080:80 joanillo/hola-mon

o millor:
$docker run -p 8080:80 -v /home/joan/DAW_M08_DESPL/UF3/docker/src/:/var/www/html/ joanillo/hola-mon

Conclusions

Has desplegat una aplicació web contenidoritzada. Qualsevol persona (el professor) pot descarregar-se aquesta aplicació i fer-la funcionar, sense haver d'instal·lar l'Apache, i sense cap problema de versions, amb la certesa de què funcionarà.

Tasques a realitzar

1. Segueix el procés del docker hola-mon. Fes les següents captures de pantalla (amb evidències de què les has fet a la teva màquina):

  • llistat de contenidors creats a la teva màquina (abans d'esborrar-lo)
  • docker pujat al dockerhub (núvol).
  • llistat de contenidors després de descarregar-lo del dockerhub.

2. Crea el docker docker-pepet, on pepet és el teu nom. Contindrà una aplicació PHP, amb la següent funcionalitat:

3. Enllaç del teu docker públic.

4. Feina pel professor: el professor descarregarà el teu docker i certificarà el seu funcionament.

Entrega

Entregaràs en un pdf les captures de pantalla, comentaris i explicacions suficients, amb les evidències de què la pràctica l'has fet tu i en la teva màquina. El pdf contindrà l'enllaç al docker públic, i el professor certificarà de què funciona.


creat per Joan Quintana Compte, febrer 2022