Sunteți pe pagina 1din 12

CURS 10

Containere Docker
 Ce este docker?
 Cum functioneaza
 Unde si cind se poate de folosit
 Cum folosesc Docker
 Studii de caz
 Ce versiuni exista si ce cerinte hardaware si software exista?

Context:

Structura – static website; background workers; user db; web frontend; queue; analytics DB; api endpoint;

Infrastructura = development VM, customer data center, qa server public cloud, disaster recovery,
production servers, production cluster, contributor’laptop
CURS 10
Matrice compatibilități

Analogii
CURS 10

Soluția: Container standard de transport


CURS 10
Docker este un sistem de containere de transport pentru cod

Un motor ce permite encapsularea(încapsularea) oricărei aplicații într-un container portabil ce poate fi


manipulat folosind operații standard și poate fi rulat pe orice platformă hardware.
CURS 10
Separația responsabilităților
 Programator
o Responsabil cu ce e in interiorul containerului
 Cod
 Librarii
 Manager pachete
 Aplicații
 Date
o Toate serverele de producție sunt identice
 Administrator
o Responsabil cu “manipularea” containerului
 Logare
 Acces
 Monitorizarea
 Configurare rețea
o Toate containerele suportă aceleași comenzi: start, stop, copy, attach, migrate, etc.

Istorie
 Lansat in 2013
 2015- 25.600 stele GitHUb, 6.800 forks si 1.100 contribuitori
 2016 – cisco, google, huawei, ibm, microsoft, red hat
 2017 *:
 500.000+ aplicatii containerizate
 100.000+ third pary project
 3.000+ contribuitori
 8 miliarde de descarcari
 1 miliard $ valoarea estimata
 1 martie 2017 – docker v17.03.0-ce
CURS 10
Cum funcționează Docker?
Containere vs Mașini Virtuale

Containerele sunt izolate dar folosesc același OS

.. rezulta o eficiență sporită in spațiu ocupat, versionare librării, start, stop, retart.

Optimizare prin Docker

Tehnologia Docker

 Libvirt – Platform Virtualization


 LXC (Linux COntainers) initial apoi libcontainer (Go): izolarea containerelor pe aceeași gazdă
 Layered File System
CURS 10
Principiile sistemului Docker

Modificări și update-uri
CURS 10
Unde și când se poate de folosit Docker?
Docker în cercetare

 Dezvoltare aplicații
 Testare aplicații existente
 Instalare aplicații (Apache, DB)
 Simulare medii complexe (multi-mașină)
 Comparații între tehnologii
 Crearea de POC

Avantaje Docker

 Reducere consum resurse


 Repository public de imagini
 Ușurința în utilizare
 Lucru colaborativ
 Izolare proiecte
 Testare facilă a aplicațiilor
 Deployment rapid
 Documentație bine structurată
 Comunitate largă

Dezavantaje Docker

 La fel de lent ca și soluțiile de virtualizare (KVM)


 Overhead Test*: ”Hello world!”
 6 ms nativ
 1000 ms pe MacOS
 390 ms Linux

Terminologie

 Imagine = ”instantaneu” (snapshot) persistat ce poate fi rulat


 Container = o instanță activă(ce poate fi rulată) a unei imagini
CURS 10
Docker ”OS” – Comenzi la nivel imagine
 Docker images
 Docker run
 Docker tag
 Docker pull
 Docker rmi
 Docker build
https://docs.docker.com/reference -> engine (docker) CLI

Docker ”OS” – comenzi la nivel de container


 Docker ps
 Docker ps -a
 Docker start
 Docker stop
 Docker pause
 Docker rm
 Docker commit

Dockerfile
 Script de tip build
 Poate fi versionat și atașat surselor
 Creare automată de imagini

Exemplu
From ubuntu
Env dock_message Hello My world
ADD dir /files
CMD [“bash”, “someScript”]
https://docs.docker.com/engine/reference/builder

Partajare de directoare
 Partajarea cu mașină gazdă
 Suprascrierea completă a directorului
 Docker run -v /hostLog:/log ubuntu

https://docs.docker.com/engine/tutorials/dockervolumes/

Publicarea de port-uri
 Port forwarding din container în mașina fizică
 Docker run -p 8080:80 ubuntu
https://docs.docker.com/engine/reference/run/#uts-settings-uts
CURS 10
Rețelistică
 Docker run -networkd=”test” ubuntu
 Docker network ls
 Docker network inspect test

Docker compose
 Utilitar pt rularea aplicatiilor multi-container
 Docker-compose.yml
 Docker-compose up
 Docker-compose down

Studii de caz

https://docs.docker.com/samples

 Asp.net core + sql server on linux


 Django and postgreSQL
 CouchDB
 MongoDB
 Rails and PostgreSQL
 Redis
 WOrdpress
CURS 10
UI
 Kitematic
 MacOSX 10.8+
 Windows 7+
CURS 10
Ce versiuni există și ce cerințe hardware și software există

Versiuni Docker

Cerințe software și hardware

S-ar putea să vă placă și