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ýchod
rovnako, 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:
Výstupom z 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: 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 A zmeňte tento riadok: Do tohto: Uložte súbor a potom spustite: 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 $ sudo docker ps Všetky dostupné príkazy môžete zobraziť jednoduchým zadaním Keď som bežal Úplný prehľadávateľný zoznam obrázkov a úložísk je k dispozícii v Docker Hub. 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: Keď som písal Všimnite si, že keby som napísal: Ja by som mala puledlku všetko obrázky ( Rovnaká logika za repozitármi a značkami platí pre ďalšie manipulácie s obrázkami. Keby si potiahol 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 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. 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. 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: Tak sa vytvorí nový kontajner s jedinečným ID a menom root @ d7c8f02c3c8c: / # apt-get nainštalovať apache2 Upozorňujeme, že nemusíte používať Normálny 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. 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: root @ d7c8f02c3c8c: / # apt-get nainštalovať nano V súbore startapache.sh pridajte tieto riadky: . / etc / apache2 / envvars / usr / sbin / apache2 -D FOREGROUND Napíšte zmeny a uložte súbor. Potom ho vykonajte: 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 Teraz musíte spáchať kontajner na uloženie zmien, ktoré ste vykonali: Commit uloží váš kontajner ako nový obrázok a vráti jedinečné ID. Tvrdenie Môžete to vidieť spustením príkazu 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 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: 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 info
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.stav $ sudo ufw
POKLES
do SÚHLASIŤ
. Ak to chcete urobiť pomocou editora Nano, zadajte nasledujúci text:$ sudo nano / etc / default / ufw
DEFAULT_FORWARD_POLICY = "DROP"
DEFAULT_FORWARD_POLICY = "AKCEPTOVAŤ"
$ sudo ufw znovu načítať
Pracujte s obrázkami Docker a kontajnermi Docker
docker ps
príkaz:# Tento príkaz zobrazí VŠETKY kontajnery v systéme
$ sudo docker ps -a
# Zobrazí sa iba BEŽNÉ kontajnery
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.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
Docker obrázky vs. kontajnery
ubuntu: 16.04
, ubuntu: xenial-20171201
, ubuntu: xenial
, ubuntu: najnovšie
.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
. $ sudo docker pull -a ubuntu
-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.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
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.Vytvorte nový obrázok Dockeru z kontajnera
Začnite s novým kontajnerom Docker
$ sudo docker run -i -t --name apache_web ubuntu / bin / bash
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
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.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
Vytvorte spúšťací skript pre kontajner Docker
# Možno budete musieť najskôr nainštalovať Nano do kontajnera
root @ d7c8f02c3c8c: / # nano /usr/local/sbin/startapache.sh
#! / bin / bash
root @ d7c8f02c3c8c: / # chmod + x /usr/local/sbin/startapache.sh
východ
. Keď opustíte kontajner, kontajner sa zastaví.Zaviažte kontajner a vytvorte nový obrázok Dockeru
$ sudo docker spáchať apache_web local: apache_web
miestne: apache_web
spôsobí, že sa potvrdenie umiestni do miestneho úložiska s názvom miestne
so štítkom apache_web
.sudo docker obrázky
:REPOSITÁRNA ZNAČKA ID OBRAZU VYTVORENÁ VIRTUÁLNA VEĽKOSŤ
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
$ sudo docker run -d -p 8080: 80 --name lokálny apache: apache_web /usr/local/sbin/startapache.sh