Vsebniška virtualizacija:
- neodvisnost od platform in programskih jezikov
- varnostno izolirano izvajanje
- optimalna izraba strojne opreme
- enostavno deljenje Docker slik
Arhitektura
Docker server/deamon: izvaja gradnjo, izvajanje in distribucijo Docker vsebnikov
Docker client: komunicira z deamonom
Tečeta lahko na istem ali ločenem sistemu
Komunikacija poteka preko REST API-ja:

Vsebnik
Docker slike
READ-ONLY predloge vsebnika
Nivoji:
- READ-ONLY: osnovna slika, uporabniške datoteke - aplikacija in odvisnosti
- READ_WRITE: izvajanje aplikacij
Nivoji se združijo v skladen datotečni sistem
Spremembe zahtevajo ponovno gradnjo le tega nivoja prenos le nivojev, ki so bili dodani/spremenjeni
Zagon vsebnika
- Prenos slike: preveri lokalno verzijo, ni najnovejša prenos iz repozitorija
- Ustvari vsebnik na podlagi slike
- Alocira READ datotečni sistem + priklopi READ-WRITE nivo
- Alocira omrežni vmesnik + dodeli IP naslov
- Zažene specificiran proces
- Zajema izhod aplikacije
Dockerfile
Format: INSTRUCTION arguments
Direktive:
FROM <image>: definiramo osnovno sliko (npr. alpine, ubuntu, …)RUN <command>: zagon ukazovCMD <command>: privzeti zagonEXPOSE <port>: definiramo vrata za dostop do vmesnika
Ob zagonu vmesnika vseeno potrebna zastava-p <port>ENV <key>=<value>: definiramo okoljske spremenljivkeADD <src> <dest>: kopira datoteke / direktorije / URL-je v datotečni sistem
Ciljna pot mora biti relativna na izvorni imenik + znotraj konteksta gradnjeCOPY <src> <dest>: kopiranje znotraj vsebnikaVOLUME <mount>: označena točka priklopaUSER <user>: uporabnik, ki se uporabi pri izvedbi direktivWORKDIR <path>: nastavi delovni direktorij pri izvedbi direktiv
Docker Compose
Zagon aplikacij z več vmesniki
Definicije odvisnosti (npr. DB mora biti dostopna pred zagonom aplikacije)