Lučki radnik

Vodič za početnike za sastavljanje Dockera

Vodič za početnike za sastavljanje Dockera
Docker Compose jedan je od najkorisnijih alata za programere i administratore sustava. Mnogi poslovi zahtijevaju nekoga tko poznaje ovu tehnologiju, tako da su Docker i Docker Compose vrući u prostoru DevOps. Bez sumnje, znanje korištenja ovih tehnologija koristit će vašoj IT karijeri.

Ako ste početnik u Docker Composeu, ali imate neko znanje o Dockeru, ovaj je članak za vas. Naučit ćete o:

Prije nego što zaronite u sočne dijelove ovog članka, malo pozadine o tehnologiji trebalo bi biti sjajno.

Kontejnerizacija je postala ključni dio softverske infrastrukture, a to se odnosi na velike, srednje ili male projekte. Iako spremnici nisu novi, Docker ih je učinio popularnima. S kontejnerima problemi ovisnosti postaju prošlost. Spremnici također igraju veliku ulogu u tome da arhitektura mikro usluga bude vrlo učinkovita. Softverske aplikacije izrađene su od manjih usluga, pa je lako te usluge smjestiti u kontejnere i one komuniciraju.

Problem s tim je što će biti pokrenuto toliko kontejnera. Takav da upravljanje njima postaje složeno. To stvara potrebu za alatom koji pomaže u pokretanju više spremnika, što Docker Compose čini. Na kraju članka razumjet ćete osnovne koncepte Docker Composea i moći ćete ga i koristiti.

Što je Docker Compose?

Bez sve složenosti, Docker Compose alat je koji vam omogućuje upravljanje više Dockerovih spremnika. Sjetite se mikro-usluga? Koncept podjele web aplikacije na različite usluge? Pa, te će se usluge odvijati u pojedinačnim spremnicima kojima treba upravljati.

Zamislite da web aplikacija ima neke od ovih usluga:

Slijedom arhitekture slične mikroservisu, te će se usluge podijeliti i pokretati u zasebnim spremnicima. Docker Compose olakšava upravljanje svim ovim spremnicima, umjesto da se njima upravlja pojedinačno. Važno je napomenuti da Docker Compose ne izrađuje eksplicitno Dockerove slike. Posao izrade slika obavlja Docker kroz Dockerfile.

Popularne usporedbe

Uobičajeno je imati mnogo rješenja problema. Docker Compose rješava ovaj problem upravljanja više spremnika. Kao rezultat, često postoje usporedbe s drugim rješenjima. Trebate napomenuti da je većina ovih usporedbi pogrešnih. Iako često nisu valjani, najbolje je da o njima saznate jer vam pomažu da bolje razumijete Docker Compose.

Dvije usporedbe o kojima će se raspravljati su:

Docker Compose vs Kubernetes

Kubernetes se često uspoređuje s Docker Composeom. Ali sličnosti u oba alata su malene, s velikim nepodudarnostima. Te tehnologije nisu na istoj razini niti u opsegu. Stoga je usporedba oba alata posve pogrešna.

Kubernetes u narodu poznat kao k8s je alat otvorenog koda koji se može koristiti za automatizaciju spremnika (nije ograničen na Docker). S k8s možete rasporediti i upravljati spremnicima, osiguravajući da se skaliraju pri različitim opterećenjima. Kubernetes osigurava da su spremnici otporni na kvarove i rade optimalno uzrokujući njihovo samoizlječenje, što nećete dobiti od Docker Compose.

Kubernetes je moćniji alat. Prikladnije je za davanje spremnika za velike primjene u proizvodnji.

Docker Compose vs Docker Swarm

Docker Compose također se često uspoređuje s Docker Swarmom, a pogrešan je koliko i usporedba Kubernetesa. Umjesto toga, Docker Swarm trebao bi se uspoređivati ​​s Kubernetesom.

Docker Swarm je alat otvorenog koda koji vam omogućuje izvođenje orkestracije spremnika baš kao što biste to učinili Kubernetes. Oboje imaju svoje prednosti i nedostatke, ali to nije tema rasprave. Dobro ćete se snaći znajući da su obje slične i nijedna nije alternativa Docker Composeu.

Instaliranje Dockera Compose

Docker Compose službeni je Docker alat, ali ne dolazi s Docker instalacijom. Dakle, morate ga instalirati kao zaseban paket. Postupak instalacije Docker Compose za Windows i Mac dostupan je na službenim stranicama.

Da biste instalirali Docker Compose na Ubuntu, možete upotrijebiti sljedeću naredbu:

sudo apt-get instaliraj docker-compose

Da biste instalirali Docker Compose na druge Linux distribucije, možete upotrijebiti curl. Jednostavno pokrenite sljedeće naredbe:

sudo uvojak -L
https: // github.com / docker / compose / releases / download / 1.18.0 / docker-compose-'uname
-s '-' uname -m '-o / usr / local / bin / docker-compose

Zatim:

sudo chmod + x / usr / local / bin / docker-compose

Prva naredba preuzima najnoviju verziju programa Docker Compose u direktorij namijenjen paketima. Drugi postavlja dozvole za datoteku, čineći je izvršnom.

Docker-Compose.yml datoteka

Neće biti strašno pogrešno reći da je datoteka Docker Compose Docker Compose, što je Dockerfile Dockeru. Unutar datoteke Docker Compose nalaze se sve upute koje Docker Compose slijedi prilikom upravljanja spremnicima. Ovdje definirate usluge koje na kraju postanu spremnici. Također definirate mreže i količine o kojima usluge ovise.

Datoteka Docker Compose koristi YAML sintaksu, a vi morate spremiti kao docker-compose.yml. U web aplikaciji možete imati usluge za pozadinu, sučelje, redove baza podataka i poruka. Te će usluge trebati određene ovisnosti. Ovisnosti poput mreža, priključaka i pohrane za optimalan rad. Sve potrebno za cijelu aplikaciju bit će definirano u datoteci Docker Compose.

Za pisanje datoteke za sastavljanje potrebno je osnovno razumijevanje YAML sintakse. Ako to niste upoznati, trebalo bi vam manje od sat vremena da to shvatite. U vašoj će datoteci biti puno uparivanja ključa / vrijednosti. Najviši nivo su:

Međutim, raspravljat će se samo o verziji i uslugama, kao što možete definirati ostale dvije u direktivi o uslugama.

Verzija

Tijekom pisanja datoteke prvo ćete definirati verziju. Kao i u vrijeme pisanja ovog članka, Docker Compose ima samo verzije 1, 2 i 3. Nije iznenađujuće što je preporučena verzija za upotrebu jer ima određene razlike u odnosu na starije verzije.

U datoteci možete odrediti verziju koja će se koristiti za Docker Compose:

Usluge

Ključ usluge vjerojatno je najvažniji ključ u datoteci Docker Compose. Ovdje navodite spremnike koje želite stvoriti. U ovom odjeljku datoteke postoji puno opcija i mnoštvo kombinacija za konfiguriranje spremnika. Evo nekoliko opcija koje možete definirati pod tipkom usluge:

U ostatku ovog odjeljka naučit ćete kako svaka od ovih opcija utječe na spremnike.

Slika

Ova opcija definira koju sliku kao usluga koristi. Koristi istu konvenciju kao i kada povlačite sliku iz Dockerhub-a u Dockerfile. Evo primjera:

slika: postgres: najnovije

Međutim, nema ograničenja samo za korištenje Dockerhub datoteka. Također možete graditi slike sa svog računala putem datoteke Docker Compose koristeći Dockerfile. Za to možete koristiti direktive "build", "context" i "dockerfile".

Evo primjera:

izgraditi:
kontekst: .
dockerfile: dockerfile

“Kontekst” bi trebao sadržavati put do direktorija s Dockerfileom. Tada "dockerfile" sadrži naziv Dockerfile koji će se koristiti. Uobičajeno je uvijek imenovati svoje Dockerfilove kao "Dockerfile", ali to daje priliku da koristite nešto drugačije. Trebate napomenuti da ovo nije jedini način korištenja slike kroz Dockerfile.

Ime spremnika

Docker spremnicima dodjeljuje nasumična imena. No, možda biste željeli imati prilagođena imena za spremnike. Pomoću tipke "container_name" možete kontejnerima dati određena imena, umjesto nasumično generiranih imena Dockera.

Evo primjera:

ime_kontejnera: linuxhint-app

Međutim, morate biti oprezni u vezi s jednom: nemojte davati isto ime višestrukim uslugama. Imena spremnika moraju biti jedinstvena; ako to učinite, usluge će propasti.

Ponovo pokrenite

Softverska infrastruktura je osuđena na propast. Znajući ovo, lakše je planirati oporavak od ovog neuspjeha. Mnogo je razloga zbog kojih spremnik ne uspije, pa tipka za ponovno pokretanje govori spremnik da se probudi ili ne. Imate sljedeće mogućnosti, ne, uvijek, u slučaju kvara i ako se ne zaustavi. Ove opcije podrazumijevaju da se spremnik nikada neće ponovo pokrenuti, uvijek će se ponovno pokrenuti, samo će se ponovo pokrenuti u slučaju kvara ili samo kad je zaustavljen.

Evo primjera:

ponovno pokretanje: uvijek

Ovisi o

Usluge rade izolirano. Ali praktično, službe ne mogu puno učiniti izolirano. Mora postojati ovisnost o drugim uslugama. Na primjer, pozadinska usluga web aplikacije ovisit će o bazama podataka, uslugama predmemoriranja itd. Pomoću tipke "ovisi_on" možete dodati ovisnosti.

Evo primjera:

ovisi o:
- db

To znači da će Docker Compose pokrenuti te usluge prije trenutne. Međutim, to ne osigurava da su te usluge spremne za upotrebu. Jedino jamstvo je da će se spremnici pokrenuti.

Okoliš

Aplikacije ovise o određenim varijablama. Zbog sigurnosti i jednostavnosti upotrebe izvlačite ih iz koda i postavljate kao varijable okruženja. Primjeri takvih varijabli su API ključevi, lozinke i tako dalje. To su uobičajene u web aplikacijama. Imajte na umu da ovaj ključ djeluje samo ako u toj usluzi nema direktive "build". Dakle, napravite sliku unaprijed.

Pogledaj ovo:

okoliš:
API-KEY: 'ključ-api'
CONFIG: 'razvoj'
SESSION_SECRET: 'tajna'

Ako namjeravate koristiti direktivu "build" bez obzira na to, morat ćete definirati varijable okruženja u direktivi "args". Direktiva "args" pod-je direktiva "build".

Evo primjera:

izgraditi:
kontekst: .
argumenti:
api-key: 'the-api-key'
config: 'razvoj'
session_secret: 'tajna'

Luke

Nijedan spremnik ne radi izolirano, unatoč tome što radi odvojeno od ostalih. Da biste osigurali vezu za komunikaciju s "vanjskim svijetom", morate mapirati luke. Mapirate port spremnika Docker na stvarnu priključku domaćina. Iz Dockera ste možda naišli na argument „-p“ koji se koristi za mapiranje portova. Direktiva o lukama djeluje slično argumentu "-p".

luke:
- "5000: 8000"

Svezaka

Docker spremnici nemaju mogućnosti trajnog pohranjivanja podataka, pa gube podatke prilikom ponovnog pokretanja. S količinama možete to zaobići. Svesci omogućuju stvaranje trajne pohrane podataka. To čini montiranjem direktorija s domaćina dockera u direktorij spremnika dockera. Svezake možete postaviti i kao usluge najviše razine.

Evo primjera:

svezaka:
- host-dir: / test / direktorij

Pri konfiguriranju svezaka dostupno je mnogo opcija, možete ih provjeriti.

Mreže

Mreže se također mogu stvoriti u uslugama. Pomoću mrežnog ključa možete postaviti umrežavanje za pojedine usluge. Ovdje možete postaviti upravljački program koji mreža koristi ako dopušta IPv6 itd. Možete postaviti mreže poput usluga, baš poput volumena.

Evo primjera:

mreže:
- zadano

Mnogo je opcija prilikom konfiguriranja mreža, možete ih provjeriti.

Ulazna točka

Kada pokrenete spremnik, često morate pokrenuti određene naredbe. Na primjer, ako je usluga web aplikacija, morate pokrenuti poslužitelj. Ključ ulazne točke omogućuje vam to. Entrypoint djeluje poput ENTRYPOINT u Dockerfileu. Jedina razlika u ovom slučaju je u tome što sve što ovdje definirate poništava konfiguracije ENTRYPOINT u Dockerfileu.ulazna točka: rad tikvice

Evo primjera:

ulazna točka: rad tikvice

Docker Compose naredbe

Nakon stvaranja datoteke Docker-Compose, morate pokrenuti određene naredbe da bi Compose funkcionirao. U ovom ćete odjeljku saznati neke glavne naredbe Docker Compose. Oni su:

Docker-sastavi

Ova naredba Docker-compose pomaže u izgradnji slike, zatim stvara i pokreće Docker spremnike. Spremnici su iz usluga navedenih u datoteci za sastavljanje. Ako se spremnici već izvode, a vi pokrenete docker-compose, on stvara spremnik. Naredba je:

docker-sastaviti

Docker-skladati početak

Ova naredba Docker-compose pokreće Docker spremnike, ali ne gradi slike niti stvara spremnike. Dakle, kontejnere pokreće samo ako su već stvoreni.

Stop zaustavljanja doker-skladanja

Često ćete trebati zaustaviti spremnike nakon stvaranja i pokretanja. Ovdje dobro dolazi naredba Docker-compose stop. Ova naredba u osnovi zaustavlja pokrenute usluge, ali spremnici i mreže za postavljanje ostaju netaknuti.
Naredba je:

docker-compose stop

Docker-sastavi dolje

Naredba Docker-compose down također zaustavlja Docker spremnike kao što to čini naredba stop. Ali to ide još više. Sastavite docker, ne samo da zaustavlja spremnike, već ih i uklanja. Mreže, volumeni i stvarne Dockerove slike također se mogu ukloniti ako koristite određene argumente. Naredba je:

docker-komponirati dolje

Ako namjeravate ukloniti sveske, specificirate dodavanjem -voluma. Na primjer:

docker-komponiraj dolje --tomovi

Ako namjeravate ukloniti slike, specificirate dodavanjem -rmi sve ili -rmi lokalni. Na primjer:

docker-compose down - rmi all
docker-compose down --rmi lokalni

Gdje svi uzrokuje da Docker Compose ukloni sve slike i lokalno uzrokuje da Docker Compose ukloni samo slike bez prilagođene oznake postavljene u polju 'slika'.

Pauza za sastavljanje dokckera

Postoje scenariji u kojima morate suspendirati spremnik, bez ubijanja ili brisanja. To možete postići naredbom Docker-compose pause. Pauzira aktivnosti tog spremnika, tako da ih možete nastaviti kada želite. Naredba je:

docker-compose stanka

Ponovno zaustavi dock-compose

Ponovno zaustavljanje docker-compose suprotno je naredbi pause docker-compose pause. Pomoću njega možete nastaviti obustavljene procese kao rezultat korištenja pauze Docker-compose. Naredba je:

docker-compose ponovno pokretanje

Docker-sastavi ps

Docker-compose ps navodi sve spremnike stvorene od usluga u datoteci Docker-Compose. Sličan je docker ps koji navodi sve spremnike koji se izvode na hostu dockera. Međutim, docker-compose ps specifičan je za spremnike iz datoteke Docker Compose. Naredba je:

docker-komponirati ps

Sve to zajedno

Sad kad ste vidjeli neke ključne koncepte iza datoteke Docker Compose, spojimo sve to zajedno. Ispod je primjer datoteke Docker-Compose za web aplikaciju Python Django. Vidjet ćete raščlambu svakog retka u ovoj datoteci i vidjeti što rade.

inačica: '3'
usluge:
db:
slika: postgres
mreža:
izgraditi: .
naredba: python upravljanje.py runserver 0.0.0.0: 8000
svezaka:
- .:/kodirati
luke:
- "8000: 8000"
ovisi o:
- db

Kratka priča je da se s ovom Docker-Compose datotekom kreira baza podataka PostgreSQL i pokreće django poslužitelj.

Duga priča je:

  1. Ova datoteka koristi verziju 3 Docker-Compose.
  2. Stvara dvije usluge. DB i web usluge.
  3. Usluga db koristi službenu docker postgres sliku.
  4. Web usluga gradi vlastitu sliku iz trenutnog direktorija. Budući da ne definira kontekst i tipke Dockerfile, očekuje se da Dockerfile po dogovoru dobije naziv "Dockerfile".
  5. Definirana je naredba koja će se pokrenuti nakon pokretanja spremnika.
  6. Volumen i priključci su definirani. Oboje koriste konvenciju mapiranja hosta: spremnika.
  7. Za volumen, trenutni direktorij “.”Preslikava se u direktorij„ / code ”unutar spremnika. To pomaže da podaci u spremniku postanu trajni, tako da se ne gube svaki put kada spremnik započne.
  8. Za priključak, priključak 8000 domaćina preslikava se u priključak spremnika 8000. Imajte na umu da web aplikacija radi na priključku 8000. Dakle, web aplikaciji se putem tog porta može pristupiti na hostu.
  9. Konačno, web usluga ovisi o db usluzi. Stoga će se web usluga pokrenuti tek kad se pokrene db spremnik.
  10. Više o datoteci Docker za aplikaciju Django i datoteci Docker Compose možete pronaći u dokumentaciji.

Zaključak

Ne morate biti stručnjak za Docker da biste koristili Docker Compose. Kao početnik koji ne namjerava savladati ovaj alat, u redu je naučiti što trebate sami. U ovom ste članku naučili osnove Docker Composea. Sada razumijete zašto je potreban Docker Compose, pogrešne usporedbe, kako postaviti konfiguracijsku datoteku Docker Compose i naredbe. Uzbudljivo je znati ove stvari, ali prava radost proizlazi iz njihova provođenja. Vrijeme je za posao.

Vodič za Shadow of the Tomb Raider za Linux
Shadow of the Tomb Raider dvanaesti je dodatak seriji Tomb Raider - franšizi u akcijsko-avanturističkoj igri koju je stvorio Eidos Montreal. I kritiča...
Kako pojačati FPS u Linuxu?
FPS je kratica Okviri u sekundi. Zadatak FPS-a je mjerenje broja sličica u reprodukcijama video zapisa ili igranim izvedbama. Jednostavnim riječima, b...
Najpopularnije laboratorijske igre Oculus App
Ako ste vlasnik slušalica Oculus, tada morate biti sigurni u bočno učitavanje. Bočno učitavanje postupak je instaliranja nehranjenog sadržaja na vaše ...