Programovanie

Výukový program pre Docker: Začíname s Dockerom

Kontajnery poskytujú ľahký spôsob, ako prenášať pracovné zaťaženie aplikácií, ako je napríklad virtuálny stroj, ale bez réžie a hromadnej práce, ktorá je zvyčajne spojená s virtuálnymi počítačmi. Vďaka kontajnerom je možné zbaliť aplikácie a služby a voľne ich presúvať medzi fyzickým, virtuálnym alebo cloudovým prostredím.

Docker, systém na vytváranie a správu kontajnerov vytvorený spoločnosťou Docker Inc., využíva natívnu funkcionalitu kontajnera, ktorá sa nachádza v systéme Linux, a sprístupňuje ju koncovým používateľom prostredníctvom rozhrania príkazového riadku a sady rozhraní API.

Mnoho bežných aplikačných komponentov je teraz k dispozícii ako predbalený kontajner Docker, čo uľahčuje nasadenie balíkov softvéru ako oddelených komponentov (model mikroslužieb). To znamená, že pomáha vedieť, ako jednotlivé kúsky do seba zapadajú zvnútra.

V tejto príručke teda inštalujem webový server Apache do kontajnera Docker a skúmam, ako Docker pri tom funguje.

Nainštalujte Docker

Používam Ubuntu ako základ zostavenia Dockeru. Ubuntu nie je len populárnou a široko používanou distribúciou, ale samotný tím Docker používa na vývoj Ubuntu a Docker je podporovaný na serveri Ubuntu od verzie 12.04 a vyššej. Kvôli jednoduchosti začínam pokynmi pri novej inštalácii Ubuntu 16.04.

Pripravte Ubuntu Linux na Docker

Prvá vec, ktorú musíte urobiť, je získať správnu verziu jadra a jeho hlavičiek:

$ sudo apt-get install --install-doporučuje linux-generic-hwe-16.04

Tento proces môže chvíľu trvať a po dokončení bude vyžadovať reštartovanie:

$ sudo reštart

Potom možno budete musieť upgradovať aj ďalšie balíčky v systéme:

$ sudo apt-get aktualizácia

$ sudo apt-get aktualizácia

Nainštalujte Docker na Ubuntu

Inštalácia Dockeru na distribúcie Linuxu CentOS, Fedora, Debian, Ubuntu a Raspbian je jednoduchá pomocou shell skriptu, ktorý si môžete stiahnuť z //get.docker.com/. Na to budete potrebovať zvlnenie príkaz. Ak chcete získať najnovšiu verziu aplikácie zvlnenie:

sudo apt-get nainštalovať zvlnenie

Akonáhle máte zvlnenie nainštalovaný, načítajte inštalačný skript a spustite ho:

zvlnenie -s //get.docker.com | sudo sh

Po dokončení inštalácie skriptu sa zobrazí nasledujúca poznámka s podrobnosťami o inštalácii verzie Dockeru, klientskej aj serverovej súčasti:

Všimnite si podrobnosti v dolnej časti o pridávaní používateľov bez root do Dockeru. Je to pohodlné, ale ak tak urobíte, odporúča sa vytvoriť iného ako root používateľa špeciálne pre prácu s Docker a pre žiadnu inú funkciu. V záujme tohto tutoriálu však zostanem pri používaní sudo spustiť Docker prostredníctvom neprivilegovaného používateľa.

Teraz môžete vyskúšať základný kontajner Dockeru:

$ sudo docker run -i -t ubuntu / bin / bash

Tento príkaz stiahne všeobecný obraz Docker Ubuntu (podľa Windows 7) ubuntu parameter) a spustite / bin / bash príkaz v tomto kontajneri. The -i a -t možnosti otvoria štandardný vstup a pseudo TTY.

Ak je úspešný, mali by ste vidieť názov hostiteľa v príkazovom riadku na podobnú podobu root @ 216b04387924: / #, ktorý označuje identifikačné číslo (a názov hostiteľa) vášho nového bežiaceho kontajnera. Ak chcete odísť, napíšte východrovnako, ako by ste opustili akúkoľvek reláciu shellu.

Teraz by ste na svojom serveri mali mať funkčnú inštaláciu Dockeru. Môžete to vyskúšať a získať základné informácie pomocou docker info príkaz:

$ sudo docker info

Výstupom z docker info príkaz zobrazuje počet kontajnerov a obrázkov, okrem iných relevantných informácií. Upozorňujeme, že to môže byť dosť zdĺhavé; tento príklad zobrazuje iba poslednú z dvoch stránok.

Posledná zmena, ktorú budete musieť urobiť, ak používate firewall UFW Ubuntu, je povolenie preposielania paketov. Či je UFW spustený, môžete skontrolovať zadaním nasledujúcich údajov:

stav $ sudo ufw

Ak príkaz vráti stav neaktívneho, môžete tento ďalší krok preskočiť. V opačnom prípade budete musieť upraviť konfiguračný súbor UFW / etc / default / ufw a zmeniť politiku preposielanie z POKLES do SÚHLASIŤ. Ak to chcete urobiť pomocou editora Nano, zadajte nasledujúci text:

$ sudo nano / etc / default / ufw

A zmeňte tento riadok:

DEFAULT_FORWARD_POLICY = "DROP"

Do tohto:

DEFAULT_FORWARD_POLICY = "AKCEPTOVAŤ"

Uložte súbor a potom spustite:

$ sudo ufw znovu načítať

Pracujte s obrázkami Docker a kontajnermi Docker

Kontajnery Docker sú oveľa efektívnejšie ako virtuálne stroje. Ak v kontajneri nie je spustený proces, je úplne pozastavený. Môžete si myslieť, že kontajnery Docker sú samostatné procesy - keď nie sú aktívne spustené, okrem úložiska nespotrebúvajú žiadne prostriedky.

Aktívne a neaktívne kontajnery môžete zobraziť pomocou docker ps príkaz:

# Tento príkaz zobrazí VŠETKY kontajnery v systéme

$ sudo docker ps -a

# Zobrazí sa iba BEŽNÉ kontajnery

$ sudo docker ps

Všetky dostupné príkazy môžete zobraziť jednoduchým zadaním docker. Aktuálny prehľad všetkých príkazov, ich volieb a úplný popis nájdete v oficiálnej dokumentácii klienta príkazového riadku.

Keď som bežal docker run skôr, tento príkaz automaticky potiahol obrázok kontajnera Ubuntu zo služby registra Docker Hub. Väčšinou však budete chcieť obrázky kontajnerov vytiahnuť do miestnej medzipamäte skôr, ako to urobiť na požiadanie. Ak to chcete urobiť, použite docker pull, Páči sa ti to:

$ sudo docker vytiahnuť ubuntu

Úplný prehľadávateľný zoznam obrázkov a úložísk je k dispozícii v Docker Hub.

Docker obrázky vs. kontajnery

V tomto okamihu stojí za to vyhláskovať, ako obrázky, kontajnery a proces ťahania / tlačenia spolupracujú.

Dockerove kontajnery sú postavené z snímky, čo sú v podstate škrupiny operačných systémov, ktoré obsahujú binárne súbory a knižnice potrebné na spustenie aplikácií v kontajneri.

Obrázky sú označené štítkomznačky, v podstate metadáta, ktoré uľahčujú ukladanie a načítanie rôznych verzií obrázka. Jediný obrázok môže byť prirodzene priradený k viacerým značkám: ubuntu: 16.04, ubuntu: xenial-20171201, ubuntu: xenial, ubuntu: najnovšie.

Keď som písal docker vytiahnuť ubuntu skôr som vytiahol predvolený obraz Ubuntu z úložiska Ubuntu, čo je obraz označený značkou najnovšie. Inými slovami, príkaz docker vytiahnuť ubuntu je ekvivalentné k docker pull ubuntu: najnovšie a (v čase písania tohto článku) ukotviteľný panel vytiahnuť ubuntu: xenial

Všimnite si, že keby som napísal:

$ sudo docker pull -a ubuntu

Ja by som mala puledlku všetko obrázky ( -a vlajka) v úložisku Ubuntu do môjho lokálneho systému. Väčšinou však budete potrebovať buď predvolený obrázok, alebo konkrétnu verziu. Napríklad ak chcete obrázok pre Ubuntu Saucy Salamander, použili by ste docker pull -a ubuntu: prefíkaný načítať obrázok s konkrétnou značkou z daného repo.

Rovnaká logika za repozitármi a značkami platí pre ďalšie manipulácie s obrázkami. Keby si potiahol tajný podľa vyššie uvedeného príkladu by ste ho spustili napísaním sudo docker run -i -t ubuntu: saucy / bin / bash. Ak píšetesudo docker image rm ubuntu, na odstránenie ubuntu obrázok, odstráni sa iba označený obrázok najnovšie . Ak chcete odstrániť iné ako predvolené obrázky, napríklad Ubuntu Saucy, musíte vložiť príslušnú značku:

sudo docker image rm ubuntu: prešibaný

Pracovný tok obrázka a kontajnera v Dockeri

Späť k práci s obrázkami. Po vytiahnutí obrázka, nech už je akýkoľvek, z neho vytvoríte živý kontajner (ako som ukázal) vykonaním príkazu docker run príkaz. Po pridaní softvéru a zmene akýchkoľvek nastavení v kontajneri môžete z týchto zmien vytvoriť nový obrázok pomocou klávesu docker spáchať príkaz.

Je dôležité poznamenať, že Docker ukladá iba delty alebo zmeny v obrázkoch vytvorených z iných obrázkov. Pri vytváraní vlastných obrázkov sa do nového obrázka ukladajú iba zmeny, ktoré vykonáte v základnom obrázku, ktorý odkazuje na základný obrázok vo všetkých jeho závislostiach. Môžete tak vytvárať obrázky, ktoré majú virtuálnu veľkosť 266 MB, ale na disku kvôli tejto efektivite zaberajú iba pár megabajtov.

Plne nakonfigurované kontajnery je potom možné presunúť do centrálneho úložiska, aby sa mohli použiť kdekoľvek v organizácii alebo dokonca verejne zdieľať. Týmto spôsobom môže vývojár aplikácie zverejniť verejný kontajner pre aplikáciu alebo môžete vytvoriť súkromné ​​úložiská na ukladanie všetkých kontajnerov, ktoré interne používa vaša organizácia.

Vytvorte nový obrázok Dockeru z kontajnera

Teraz, keď lepšie rozumiete tomu, ako fungujú obrázky a kontajnery, poďme si nastaviť kontajner webového servera Apache a urobiť ho trvalým.

Začnite s novým kontajnerom Docker

Najskôr je potrebné postaviť nový kontajner. Existuje niekoľko spôsobov, ako to urobiť, ale pretože máte niekoľko príkazov na spustenie, spustite koreňový shell v novom kontajneri:

$ sudo docker run -i -t --name apache_web ubuntu / bin / bash

Tak sa vytvorí nový kontajner s jedinečným ID a menom apache_web. Poskytne vám tiež koreňový shell, pretože ste zadali / bin / bash ako príkaz na spustenie. Teraz nainštalujte webový server Apache pomocou trefne:

root @ d7c8f02c3c8c: / # aktualizácia apt-get

root @ d7c8f02c3c8c: / # apt-get nainštalovať apache2

Upozorňujeme, že nemusíte používať sudo, pretože bežíte ako root vo vnútri nádoby. Všimnite si, že vy robiť treba utiecť aktualizácia apt-get, pretože, opäť, zoznam balíkov vnútri nádoby nie je to isté ako to mimo neho.

Normálny trefne zobrazí sa výstup a balík Apache2 je nainštalovaný vo vašom novom kontajneri. Po dokončení inštalácie spustite Apache, nainštalujte curl a otestujte inštaláciu, a to všetko z kontajnera:

root @ d7c8f02c3c8c: / # služba apache2 štart

root @ d7c8f02c3c8c: / # apt-get nainštalovať zvlnenie

root @ d7c8f02c3c8c: / # zvlnenie // localhost

Po poslednom príkaze by sa malo v konzole zobraziť nespracované HTML predvolenej stránky Apache. To znamená, že náš server Apache je nainštalovaný a beží vo vašom kontajneri.

Ak ste to robili v produkčnom prostredí, nakonfigurovali by ste Apache podľa svojich požiadaviek a nainštalovali ste aplikáciu, ktorá by slúžila. Docker nechal adresáre mimo kontajnera mapovať na cesty v ňom, takže jedným z prístupov je uložiť vašu webovú aplikáciu do adresára na hostiteľovi a zviditeľniť ju pre kontajner prostredníctvom mapovania.

Vytvorte spúšťací skript pre kontajner Docker

Pamätajte, že kontajner Dockeru beží iba dovtedy, kým je aktívny jeho proces alebo procesy. Takže ak sa proces, ktorý spustíte pri prvom spustení kontajnera, presunie na pozadí, podobne ako systémový démon, Docker kontajner zastaví. Preto je pri spustení kontajnera potrebné spustiť program Apache v popredí, aby sa kontajner neopustil hneď po spustení.

Vytvorte skript startapache.sh v adresári / usr / local / sbin:

# Možno budete musieť najskôr nainštalovať Nano do kontajnera

root @ d7c8f02c3c8c: / # apt-get nainštalovať nano

root @ d7c8f02c3c8c: / # nano /usr/local/sbin/startapache.sh

V súbore startapache.sh pridajte tieto riadky:

#! / bin / bash

. / etc / apache2 / envvars

/ usr / sbin / apache2 -D FOREGROUND

Napíšte zmeny a uložte súbor. Potom ho vykonajte:

root @ d7c8f02c3c8c: / # chmod + x /usr/local/sbin/startapache.sh

Všetko, čo tento malý skript robí, je priniesť príslušné premenné prostredia pre Apache a spustiť proces Apache v popredí.

Dokončili ste úpravy obsahu kontajnera, aby ste mohli kontajner opustiť napísaním východ. Keď opustíte kontajner, kontajner sa zastaví.

Zaviažte kontajner a vytvorte nový obrázok Dockeru

Teraz musíte spáchať kontajner na uloženie zmien, ktoré ste vykonali:

$ sudo docker spáchať apache_web local: apache_web

Commit uloží váš kontajner ako nový obrázok a vráti jedinečné ID. Tvrdenie miestne: apache_web spôsobí, že sa potvrdenie umiestni do miestneho úložiska s názvom miestne so štítkom apache_web.

Môžete to vidieť spustením príkazu sudo docker obrázky:

REPOSITÁRNA ZNAČKA ID OBRAZU VYTVORENÁ VIRTUÁLNA VEĽKOSŤ

miestny apache_web d95238078ab0 pred 4 minútami 284,1 MB

Upozorňujeme, že presné podrobnosti vášho obrázka - ID obrázka, veľkosť kontajnera - sa budú od môjho príkladu líšiť.

Kontajnery Docker sú navrhnuté tak, aby bolinemenný. Kedykoľvek vykonáte zmeny v kontajneri, výsledky sa zapíšu do úplne nového kontajnera, nikdy nie do pôvodného. Ak chcete vymeniť Apache napríklad za Nginx, začali by ste s originálom ubuntu: najnovšie kontajner, pridajte k tomu Nginx a uložte výsledky ako úplne nový kontajner s názvom niečo ako miestne: nginx.

Pochopte základné informácie o sieťach Docker

Teraz, keď máte náš obrázok, môžete spustiť náš kontajner a začať zobrazovať stránky. Skôr ako to urobíte, dovoľte mi chvíľu vysvetliť, ako Docker narába so sieťami.

Po nainštalovaní Dockeru vytvára tri virtuálne siete, ktoré môžu byť použité kontajnermi Dockeru:

  • Most: Toto je sieť, ku ktorej sa kontajnery štandardne pripájajú. Mostná sieť umožňuje kontajnerom komunikovať medzi sebou priamo, ale nie s hostiteľským systémom.
  • hostiteľ: Táto sieť umožňuje priamo hosťom vidieť kontajnery, akoby všetky aplikácie v nich bežali ako služby miestnej siete.
  • žiadny: Toto je v podstate sieť s nulovou alebo spätnou väzbou. Kontajner spojený so žiadnym nevidí nič iné ako seba.

Ak chcete spustiť kontajner a umožniť mu komunikáciu s ostatnými kontajnermi aj s vonkajším svetom, musíte porty z tohto kontajnera ručne namapovať na hostiteľa. Z dôvodu môjho príkladu to môžete urobiť na príkazovom riadku pri spustení novo vytvoreného kontajnera:

$ sudo docker run -d -p 8080: 80 --name lokálny apache: apache_web /usr/local/sbin/startapache.sh

Copyright sk.verticalshadows.com 2024

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