Rozdiel medzi obrázkami Dockeru a kontajnermi

1. Prehľad

Docker je nástroj na ľahké vytváranie, nasadzovanie a spúšťanie aplikácií. Umožňuje nám to zbaliť naše aplikácie so všetkými závislosťami a distribuovať ich ako jednotlivé balíčky. Docker zaručuje, že naša aplikácia bude fungovať rovnako na každej inštancii Docker.

Keď začneme používať Docker, existujú dva hlavné pojmy musíme mať jasno v - obrázky a kontajnery.

V tomto tutoriále sa dozvieme, čo sú zač a v čom sa líšia.

2. Docker Images

Obrázok je súbor, ktorý predstavuje zabalenú aplikáciu so všetkými závislosťami potrebnými na správne spustenie. Inými slovami by sme mohli povedať, že a Obrázok doku je ako trieda Java.

Obrázky sú zostavené ako rad vrstiev. Vrstvy sa zhromažďujú jeden na druhom. Čo je to teda vrstva? Jednoducho povedané, vrstva je obrázok.

Povedzme, že chceme vytvoriť Docker obraz Java aplikácie Hello World. Prvá vec, ktorú si musíme premyslieť, je to, čo potrebuje naša aplikácia.

Na začiatok je to Java aplikácia, takže budeme potrebovať JVM. Dobre, zdá sa to ľahké, ale čo musí JVM bežať? Potrebuje operačný systém. Preto náš obraz Dockeru bude mať vrstvu operačného systému, JVM a našu aplikáciu Hello World.

Veľkou výhodou Dockeru je jeho veľká komunita. Ak chceme stavať na obrázku, môžeme ísť do Docker Hub a vyhľadať, či je k dispozícii požadovaný obrázok.

Povedzme, že chceme vytvoriť databázu pomocou databázy PostgreSQL. Nepotrebujeme vytvárať nový obraz PostgreSQL od nuly. Len ideme do Docker Hubu a hľadáme postgres, čo je oficiálny názov obrázka Dockeru pre PostgresSQL, vyberte potrebnú verziu a spustite ju.

Každý obrázok, ktorý vytvoríme alebo stiahneme z Docker Hubu, je uložený v našom súborovom systéme a je identifikovaný podľa názvu a značky. Môže to byť tiež identifikovaný podľa jeho id obrázka.

Pomocou ukotviteľné obrázky príkaz, môžeme si pozrieť zoznam obrázkov, ktoré máme k dispozícii v našom súborovom systéme:

$ docker images REPOSITÁRNA ZNAČKA ID OBRAZU VYTVORENÁ VEĽKOSŤ postgres 11.6 d3d96b1e5d48 pred 4 týždňami 332 MB mongo najnovšie 9979235fc504 pred 6 týždňami 364 MB rabbitmq 3-management 44c4867e4a8b pred 8 týždňami 180 MB mysql 8.0.18 d435eee2ca1 5 b Pred 2 mesiacmi 757 MB flyway / flyway 6.0.8 0c11020ffd69 pred 3 mesiacmi 247 MB ​​java 8-jre e44d62cf8862 pred 3 rokmi 311 MB

3. Spúšťanie Docker Images

Obrázok sa spúšťa pomocou docker run príkaz s názvom a značkou obrázka. Povedzme, že chceme spustiť obrázok postgres 11.6:

docker run -d postgres: 11.6

Oznámenie, ktoré sme poskytli -d možnosť. To hovorí Dockerovi, aby spustil obrázok na pozadí - známy tiež ako odpojený režim.

Pomocou docker ps príkaz, ktorým môžeme skontrolovať, či je náš obrázok spustený, by sme mali použiť tento príkaz:

$ docker ps ID KONTAJNERA OBRAZOVÝ PRÍKAZ VYTVORENÝ STAV NÁZVY PRÍSTAVOV 3376143f0991 postgres: 11.6 „docker-entrypoint.s…“ pred 3 minútami Až o 3 minúty 5432 / tcp tender_heyrovsky

Všimnite si ID KONTAJNERA vo výstupe vyššie. Poďme sa pozrieť na to, čo je kontajner a ako súvisí s obrázkom.

4. Kontajnery Docker

Kontajner je inštancia obrázka. Každý kontajner je možné identifikovať podľa jeho ID. Keď sa vrátime k našej analógii vývoja Java, dalo by sa to povedať kontajner je ako inštancia triedy.

Docker definuje sedem stavov pre kontajner: vytvorené, reštartovanie, bežiaci, odstránenie, pozastavené, vystúpila mŕtvy. To je dôležité vedieť. Pretože kontajner je iba inštanciou obrázka, nemusí byť spustený.

Teraz sa ešte zamyslime nad bežať príkaz, ktorý sme videli vyššie. Povedali sme, že sa používa na spúšťanie obrázkov, ale to nie je úplne presné. Pravda je taká, že bežať príkaz je zvyknutý na vytvoriť a začať nový kontajner obrázka.

Jednou z veľkých výhod je, že kontajnery sú ako ľahké VM. Ich správanie je navzájom úplne izolované. To znamená, že môžeme prevádzkovať viac kontajnerov s rovnakým obrázkom, pričom každý z nich je v inom stave s rôznymi údajmi a rôznymi ID.

Schopnosť spustiť viac kontajnerov s rovnakým obrázkom súčasne je veľkou výhodou, pretože nám umožňuje ľahký spôsob škálovania aplikácií. Zamyslime sa napríklad nad mikroslužbami. Ak je každá služba zabalená ako Docker image, znamená to, že nové služby je možné nasadiť ako kontajnery na požiadanie.

5. Životný cyklus kontajnerov

Predtým sme spomenuli sedem stavov kontajnera. Teraz sa pozrime, ako môžeme použiť docker nástroj príkazového riadku na spracovanie rôznych stavov životného cyklu.

Naštartovanie nového kontajnera si vyžaduje nás vytvoriť to a potom začať to. To znamená, že pred spustením musí prejsť stavom vytvorenia. Môžeme to urobiť explicitným vytvorením a spustením kontajnera:

docker kontajner vytvoriť: spustiť docker kontajner 

Alebo to môžeme ľahko urobiť pomocou bežať príkaz:

docker run:

Bežiaci kontajner môžeme pozastaviť a potom znova uviesť do bežiaceho stavu:

pozastaviť ukotvenie 

Pozastavený kontajner bude pri kontrole procesov zobrazovať stav „Pozastavené“:

$ docker ps ID KONTAJNERA OBRAZOVÝ PRÍKAZ VYTVORENÝ STAV NÁZVY PRÍSTAVOV 9bef2edcad7b postgres: 11.6 „docker-entrypoint.s…“ pred 5 minútami Až 4 minúty (pozastavené) 5432 / tcp tender_heyrovsky

Môžeme tiež zastaviť bežiaci kontajner a potom ho znova spustiť:

zastaviť 

A nakoniec môžeme odstrániť kontajner:

docker kontajner rm 

Odstrániť možno iba kontajnery v zastavenom alebo vytvorenom stave.

Viac informácií o príkazoch Docker sa dozviete v príručke k príkazovému riadku Docker.

6. Záver

V tomto článku sme diskutovali o obrázkoch a kontajneroch Docker a o tom, ako sa líšia. Obrázky popisujú aplikácie a spôsob ich spustenia. Kontajnery sú inštancie obrázkov, kde je možné spustiť viac kontajnerov s rovnakým obrázkom, každý v inom stave.

Hovorili sme tiež o životnom cykle kontajnerov a naučili sme sa základné príkazy na ich správu.

Teraz, keď poznáme základné informácie, je čas dozvedieť sa viac o vzrušujúcom svete Dockeru a začať rozširovať naše vedomosti!


$config[zx-auto] not found$config[zx-overlay] not found