Differences

This shows you the differences between two versions of the page.

Link to this comparison view

devops:cursuri:04 [2021/07/21 18:26]
oana.minciu.th
devops:cursuri:04 [2021/07/28 16:29] (current)
bogdan.croitoru
Line 1: Line 1:
-===== Cursul 04 Docker =====+===== Cursul 04Docker =====
  
  
-=== Containere ===+==== Containere ​====
 Conceptul de container nu este unul nou, în mediul Linux având mai multe implementări. Printre primele este cunoscutul chroot(), ce permite unui proces să ruleze într-un mediu izolat, practic în propriul sistem de fișiere izolat. Un alt tip de container cunoscut este LXC, prescurtare de la LinuX Containers, și permite rularea unui întreg sistem de operare într-un container, ceea ce presupune o asemănare cu mașinile virtuale adevărate: se pot instala pachete software, se pot realiza operații de actualizare,​ se pot modifica configurații. Conceptul de container nu este unul nou, în mediul Linux având mai multe implementări. Printre primele este cunoscutul chroot(), ce permite unui proces să ruleze într-un mediu izolat, practic în propriul sistem de fișiere izolat. Un alt tip de container cunoscut este LXC, prescurtare de la LinuX Containers, și permite rularea unui întreg sistem de operare într-un container, ceea ce presupune o asemănare cu mașinile virtuale adevărate: se pot instala pachete software, se pot realiza operații de actualizare,​ se pot modifica configurații.
  
-=== Mașini virtuale vs Containere ===+==== Mașini virtuale vs Containere ​====
 Există deseori o confuzie între containere și mașini virtuale, dar trebuie remarcat că ele sunt două concepte diferite. Un container nu are niciun program de emulare pentru componente hardware, precum are o mașină virtuală și este văzut ca un simplu proces. Spre deosebire, mașina virtuală conține un întreg sistem de operare incluzând procesoare virtuale, interfețe de rețea și presupune implicit un consum foarte mare de resurse, de aceea se evidențiază și diferența considerabilă de dimensiune între cele două. O diferență derivată din dimensiune este portabilitatea:​ implicit containerele pot fi migrate ușor pe orice platformă compatibilă (spre exemplu: orice Linux capabil să ruleze Docker). În final, un container nu reprezintă altceva decât un proces sau un grup de procese pe o mașină gazdă, care consideră că rulează pe propria mașină separată. Mașina gazdă știe că un container este de fapt un proces, dar containerul crede că el este o mașină separată în sine.  Există deseori o confuzie între containere și mașini virtuale, dar trebuie remarcat că ele sunt două concepte diferite. Un container nu are niciun program de emulare pentru componente hardware, precum are o mașină virtuală și este văzut ca un simplu proces. Spre deosebire, mașina virtuală conține un întreg sistem de operare incluzând procesoare virtuale, interfețe de rețea și presupune implicit un consum foarte mare de resurse, de aceea se evidențiază și diferența considerabilă de dimensiune între cele două. O diferență derivată din dimensiune este portabilitatea:​ implicit containerele pot fi migrate ușor pe orice platformă compatibilă (spre exemplu: orice Linux capabil să ruleze Docker). În final, un container nu reprezintă altceva decât un proces sau un grup de procese pe o mașină gazdă, care consideră că rulează pe propria mașină separată. Mașina gazdă știe că un container este de fapt un proces, dar containerul crede că el este o mașină separată în sine. 
  
-=== Docker === +==== Docker ​==== 
-Conform documentației oficiale, Docker este o platformă pentru dezvoltare, livrare și dezvoltare ​de aplicații.+Conform documentației oficiale, Docker este o platformă pentru dezvoltare, livrare și rulare ​de aplicații.
 Containerele sunt: Containerele sunt:
   * efemere   * efemere
Line 16: Line 16:
  
 Efemere înseamnă ca toate datele generate în cadrul rulării acelui container vor fi pierdute atunci când el nu mai există. Containerele sunt specializate pentru un singur scop specific în general, spre exemplu: rularea unei aplicații Java, rularea de teste automate, mediu de debug cu unelte specifice(nmap,​ tshark). Astfel un container va conține doar minimul necesar de pachete software, rezultând o dimensiune redusă. Efemere înseamnă ca toate datele generate în cadrul rulării acelui container vor fi pierdute atunci când el nu mai există. Containerele sunt specializate pentru un singur scop specific în general, spre exemplu: rularea unei aplicații Java, rularea de teste automate, mediu de debug cu unelte specifice(nmap,​ tshark). Astfel un container va conține doar minimul necesar de pachete software, rezultând o dimensiune redusă.
 +
 +Docker are în componență mai multe unelte: serviciul //daemon// ce rulează pe sistemul de operare gazdă, clientul cu interfață în linie de comandă, și un registru ce stochează imaginile Docker, dar acest registru este extern. Clientul se conectează la API-ul Docker ce rulează în cadrul serviciului //daemon//.
 +
 +=== Imagini Docker ===
 +Orice container Docker este pornit dintr-o imagine Docker.
 +O imagine este echivalentă cu o instantanee a unei instanțe de mașină virtuală. Ea reprezintă un șablon //​read-only//​ alcătuit dintr-un set de straturi. O imagine poate fi folosită de mai multe containere în paralel, dar nu va suferi nicio modificare în urma creării oricărui container pe baza acesteia. Este important de menționat că la crearea unui container se adaugă un nou strat la imaginea sursă, un strat ce poate fi scris și aparține exclusiv unui singur container. Prin faptul că toate operațiile din interiorul containerului se efectuează în acel strat propriu se explică păstrarea stării imaginii Docker.
 +
 +Se poate construi o imagine Docker folosind un fișier numit Dockerfile, în care se descrie cum trebuie să arate imaginea: din ce imagine de bază pornește, ce fișiere sunt adăugate în interiorul său, ce pachete se doresc a fi instalate, etc. Detalii despre sintaxa unui astfel de fișier se pot obține consultând documentația oficială Docker, dar un exemplu succint este următorul:
 +
 +
 +         FROM ubuntu:​20.04 ​
 +         COPY . /​opt/​devops-summer-school/ ​
 +         ​WORKDIR /​opt/​devops-summer-school
 +         ENV http_proxy="​http://​10.220.72.89:​8000"​
 +         RUN apt-get update && apt install -y diffstat tshark
 +         ​EXPOSE 8163
 +         CMD [ "/​bin/​bash"​ ]
 +
 +
  
  
  
  
devops/cursuri/04.1626881213.txt.gz · Last modified: 2021/07/21 18:26 by oana.minciu.th
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0