Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
| Següent revisió | Revisió prèvia | ||
|
playground:prova2 [2023/05/25 20:06] enric_mieza_sanchez creat |
— (actual) | ||
|---|---|---|---|
| Línia 1: | Línia 1: | ||
| - | ====== Dockerfile : creant les nostres pròpies imatges ====== | ||
| - | |||
| - | El '' | ||
| - | |||
| - | Veurem com crear un contenidor "des de zero" o //from scratch//, afegint només els arxius del SO imprescindibles per a la funció que volem resoldre. | ||
| - | |||
| - | També veurem com extendre contenidors ja fets (habitualment partint d'una distribució standard com Debian, Ubuntu, Centos o Alpine) i afegir-los el servei o funció que necessitem. | ||
| - | |||
| - | Referències: | ||
| - | * [[Docker]]: article amb les bases a bytes.cat | ||
| - | * [[Docker-compose]]: | ||
| - | * [[https:// | ||
| - | |||
| - | Tenim diverses maneres de crear una imatge Docker: | ||
| - | - A partir d'un Dockerfile. | ||
| - | - Descarregant-la de Docker Hub ('' | ||
| - | - Utilitzant [[https:// | ||
| - | |||
| - | {{tag> #FpInfor #Ciber #CiberMp03 #Ceti #CetiMp03 DevOps docker dockerfile flask wordpress docker_commit docker_compose contenidors containers }} | ||
| - | |||
| - | \\ | ||
| - | |||
| - | ===== Primer Dockerfile from scratch ===== | ||
| - | |||
| - | Una primera versió elemental del '' | ||
| - | |||
| - | <file Dockerfile Dockerfile> | ||
| - | # imatge base. " | ||
| - | FROM scratch | ||
| - | |||
| - | WORKDIR / | ||
| - | |||
| - | # Afegim arxius al contenidor des de la carpeta local " | ||
| - | ADD src / | ||
| - | |||
| - | # CMD o ENTRYPOINT van al final per posar en marxa un servei en primer plànol | ||
| - | CMD ["/ | ||
| - | </ | ||
| - | |||
| - | Els fitxers que posarem a la carpeta '' | ||
| - | |||
| - | - Localitzem l' | ||
| - | / | ||
| - | </ | ||
| - | - Ara que sabem quin és, consultem els arxius dels què depèn:< | ||
| - | linux-vdso.so.1 (0x00007ffd30bad000) | ||
| - | libtinfo.so.6 => / | ||
| - | libdl.so.2 => / | ||
| - | libc.so.6 => / | ||
| - | / | ||
| - | </ | ||
| - | - Aquests arxius, amb el mateix nom exacte i les carpetes idèntiques, | ||
| - | |||
| - | [[https:// | ||
| - | |||
| - | Resumim aquí una relació d' | ||
| - | |||
| - | . | ||
| - | ├── Dockerfile | ||
| - | └── src | ||
| - | ├── bin | ||
| - | │ └── bash | ||
| - | ├── lib | ||
| - | │ └── x86_64-linux-gnu | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | └── lib64 | ||
| - | └── ld-linux-x86-64.so.2 | ||
| - | |||
| - | ==== Construim imatge ==== | ||
| - | |||
| - | Un cop tenim tots els arxius a la carpeta src amb les seves carpetes adequades, construïm la imatge amb: | ||
| - | $ docker build -t <tag> . | ||
| - | |||
| - | Si poseu un // | ||
| - | |||
| - | $ docker build -t enric/ | ||
| - | |||
| - | Podeu veure les vostres imates creades amb: | ||
| - | $ docker images | ||
| - | |||
| - | I la posem en marxa amb: | ||
| - | $ docker run -ti enric/ | ||
| - | bash-5.0# | ||
| - | |||
| - | És molt important que en aquest container no podem posar-ho en marxa amb el flag '' | ||
| - | |||
| - | Podem provar un banal '' | ||
| - | bash-5.0# echo " | ||
| - | hola | ||
| - | bash-5.0# ls | ||
| - | bash: ls: command not found | ||
| - | |||
| - | Però veiem que un simple '' | ||
| - | |||
| - | NOTA: Comandes que es poden fer amb bash sense instal.lar cap binari: | ||
| - | |||
| - | [[https:// | ||
| - | |||
| - | ==== Publicar imatge a Docker Hub ==== | ||
| - | <WRAP todo> | ||
| - | - Afegeix a '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * una altra comanda de la vostra elecció. | ||
| - | - Quan la imatge et funcioni, crea un compte a [[https:// | ||
| - | - Penja al Moodle la URL del Docker Hub amb el teu flamant contenidor publicat. | ||
| - | </ | ||
| - | |||
| - | \\ | ||
| - | |||
| - | ==== Comparant espai ocupat per les imatges ==== | ||
| - | |||
| - | Descarregueu les imatges de ubuntu, centos, httpd i alpine, i compareu el què ocupen: | ||
| - | < | ||
| - | ubuntu | ||
| - | httpd | ||
| - | centos | ||
| - | alpine | ||
| - | </ | ||
| - | |||
| - | Com podem veure, la [[https:// | ||
| - | |||
| - | \\ | ||
| - | |||
| - | |||
| - | ===== Docker commit ===== | ||
| - | |||
| - | Amb [[https:// | ||
| - | |||
| - | ==== Millora d'un Wordpress amb docker commit ==== | ||
| - | <WRAP todo> | ||
| - | Tenim un client que ens demana que li migrem un Wordpress, i el volem posar en un contenidor a la nostra màquina segura. Fem un export i al voler fer l' | ||
| - | |||
| - | - Posa en marxa un Wordpress (no cal fer la DB, només el WP) | ||
| - | - Connecta' | ||
| - | - Comprova el valor de les variables carregades, pots anar a ''/ | ||
| - | - Visita la web, però canvia la URL a /prova.php i comprova els valors de '' | ||
| - | - Ves a la carpeta ''/ | ||
| - | memory_limit = 500M | ||
| - | upload_max_filesize = 500M | ||
| - | post_max_size = 500M | ||
| - | max_execution_time = 600 | ||
| - | </ | ||
| - | - Surt del contenidor i guarda la teva imatge amb un< | ||
| - | - Posa en marxa ara un docker-compose (mira la web de Docker Hub, ara sí, amb DB inclosa). Canvia la imatge de wordpress per la nova imatge que hem creat '' | ||
| - | - També ho pots comprovar anant a la pàgina '' | ||
| - | </ | ||
| - | |||
| - | |||
| - | \\ | ||
| - | |||
| - | ===== Combinant Dockerfile i Docker-compose ===== | ||
| - | |||
| - | Ara farem el mateix que hem fet a l' | ||
| - | |||
| - | Amb això crearem una imatge de Wordpress personalitzada amb les modificacions que ens interessa (pel cas, que ens permeti pujar arxius grans). | ||
| - | |||
| - | |||
| - | ==== Millora d'un Wordpress amb Dockerfile ==== | ||
| - | <WRAP todo> | ||
| - | - Crea una carpeta de projecte '' | ||
| - | - Afegeix l' | ||
| - | memory_limit = 500M | ||
| - | upload_max_filesize = 500M | ||
| - | post_max_size = 500M | ||
| - | max_execution_time = 600 | ||
| - | </ | ||
| - | - Modifica el '' | ||
| - | build: .</ | ||
| - | - Al '' | ||
| - | FROM wordpress | ||
| - | COPY uploads.ini / | ||
| - | </ | ||
| - | - (No li cal CMD o ENTRYPOINT perquè ho hereda del pare // | ||
| - | - Posa-ho en marxa i, quan et funcioni, mostra-ho al professor amb les adequades explicacions i comprovacions. | ||
| - | - Carrega la imatge '' | ||
| - | </ | ||
| - | |||
| - | \\ | ||
| - | |||
| - | ===== Primera webapp amb Flask, Dockerfile i Docker-compose ===== | ||
| - | |||
| - | Continua a l' | ||
| - | |||