Ohjelmointi

Dockerin opetusohjelma: Aloita Dockerin käyttö

Säiliöt tarjoavat kevyen tavan viedä sovellusten työkuormat kannettaviksi, kuten virtuaalikone, mutta ilman virtuaalikoneisiin tyypillisesti liittyviä yleiskustannuksia ja irtotavaraa. Säilöillä sovelluksia ja palveluja voidaan pakata ja siirtää vapaasti fyysisten, virtuaalisten tai pilviympäristöjen välillä.

Docker, Docker Inc: n luoma säilönluonti- ja hallintajärjestelmä, ottaa käyttöön Linuxissa olevat natiivisäiliötoiminnot ja asettaa sen loppukäyttäjien saataville komentoriviliittymän ja joukon sovellusliittymiä käyttämällä.

Monet yleiset sovelluskomponentit ovat nyt saatavilla valmiiksi pakatuina Docker-kontteina, mikä helpottaa ohjelmistopinojen asentamista irrotettuina komponentteina (mikropalvelumalli). Tästä huolimatta se auttaa tietämään, kuinka palat sopivat yhteen sisältäpäin.

Siten tässä oppaassa asennan Apache-verkkopalvelimen Docker-säilöön ja tutkin kuinka Docker toimii matkan varrella.

Asenna Docker

Käytän Ubuntua Docker-rakennuksen perustana. Ubuntu ei ole vain suosittu ja laajasti käytetty jakelu, mutta Docker-tiimi itse käyttää Ubuntua kehitystyöhön, ja Dockeria tuetaan Ubuntu Serverissä versioista 12.04 ja uudemmista. Aloitan yksinkertaisuuden vuoksi ohjeista, kun käytän uutta Ubuntu 16.04 -asennusta.

Valmista Ubuntu Linux Dockerille

Ensimmäinen asia on hankkia oikea versio ytimestä ja sen otsikoista:

$ sudo apt-get install --install-suosittelee linux-generic-hwe-16.04

Tämä prosessi voi viedä jonkin aikaa ja edellyttää uudelleenkäynnistystä, kun olet valmis:

$ sudo käynnistetään uudelleen

Saatat joutua päivittämään myös muita järjestelmän paketteja jälkikäteen:

$ sudo apt-get -päivitys

$ sudo apt-get -päivitys

Asenna Docker Ubuntuun

Dockerin asennus CentOS-, Fedora-, Debian-, Ubuntu- ja Raspbian Linux -jakeluihin on helppoa shell-skriptin avulla, jonka voit ladata osoitteesta //get.docker.com/. Tätä varten tarvitset kiemura komento. Saat uusimman version kiemura:

sudo apt-get install curl

Kun sinulla on kiemura asennettu, hae asennusohjelma ja aseta se käyntiin:

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

Kun komentosarjan asennus on valmis, näet seuraavanlaisen muistiinpanon, jossa on asennustiedot Docker-version, sekä asiakkaan että palvelimen osien versiosta:

Ota huomioon alareunassa olevat tiedot muiden kuin juurtavien käyttäjien lisäämisestä Dockeriin. Se on kätevä tehdä, mutta jos teet niin, on suositeltavaa luoda ei-juurtava käyttäjä nimenomaan Dockerin kanssa työskentelyyn eikä muihin toimintoihin. Tämän opetusohjelman vuoksi pidän kuitenkin käytöstä sudo ajaa Docker käyttöoikeuksettomana käyttäjänä.

Nyt voit testata Docker-perussäiliön:

$ sudo-telakointiasema -i -t ubuntu / bin / bash

Tämä komento lataa yleisen Docker Ubuntu -kuvan ( ubuntu parametri) ja suorita / bin / bash komento siinä kontissa. -i ja -t vaihtoehdot avaavat vakiotulon ja vastaavan pseudo-TTY: n.

Jos se onnistuu, sinun pitäisi nähdä isäntänimi komentokehotteessa muuttuvaksi root @ 216b04387924: / #, joka ilmaisee uuden käynnissä olevan säilön tunnistenumeron (ja isäntänimen). Poistu kirjoittamalla poistua, sama kuin jätät minkä tahansa shell-istunnon.

Palvelimellasi pitäisi nyt olla toimiva Docker-asennus. Voit testata sitä ja saada perustiedot käyttämällä telakointitiedot komento:

$ sudo-telakointiaseman tiedot

Tulos telakointitiedot komento näyttää konttien ja kuvien lukumäärän muun asiaankuuluvan tiedon joukossa. Huomaa, että se voi olla melko pitkä; tämä esimerkki näyttää vain viimeisen kahdesta sivusta.

Viimeinen muutos, joka sinun on tehtävä, jos käytät Ubuntun UFW-palomuuria, on sallia pakettien edelleenlähetys. Voit tarkistaa, toimiiko UFW kirjoittamalla seuraavat tiedot:

$ sudo ufw-tila

Jos komento palauttaa passiivisen tilan, voit ohittaa tämän seuraavan vaiheen. Muussa tapauksessa sinun on muokattava UFW-määritystiedostoa / etc / default / ufw ja muutettava edelleenlähetyskäytäntö PUDOTA että HYVÄKSYÄ. Voit tehdä tämän Nano-editorilla kirjoittamalla seuraavat:

$ sudo nano / etc / default / ufw

Ja vaihda tämä rivi:

DEFAULT_FORWARD_POLICY = "PUDOTUS"

Tähän:

DEFAULT_FORWARD_POLICY = "HYVÄKSY"

Tallenna tiedosto ja suorita sitten:

$ sudo ufw lataa

Työskentele Docker-kuvien ja Docker-konttien kanssa

Docker-kontit ovat paljon tehokkaampia kuin virtuaalikoneet. Kun säiliö ei ole käynnissä, se on täysin lepotilassa. Saatat ajatella Docker-kontteja itsenäisinä prosesseina - kun ne eivät ole aktiivisesti käynnissä, ne eivät kuluta resursseja lukuun ottamatta tallennustilaa.

Voit tarkastella aktiivisia ja passiivisia säilöjä telakka ps komento:

# Tämä komento näyttää KAIKKI järjestelmän kontit

$ sudo docker ps -a

# Tämä näyttää vain RUNNING-kontit

$ sudo docker ps

Voit tarkastella kaikkia käytettävissä olevia komentoja yksinkertaisesti syöttämällä satamatyöläinen. Katso kaikkien komentojen, niiden vaihtoehtojen ja täydellisten kuvausten ajan tasalla oleva luettelo virallisesta komentorivin asiakasdokumentaatiosta.

Kun juoksin telakointiajo aikaisemmin komento automaattisesti vedetty Ubuntu-säilön kuva Docker Hub -rekisteripalvelusta. Suurimman osan ajasta haluat kuitenkin vetää säilökuvat paikalliseen välimuistiin etukäteen sen sijaan, että tekisit sen pyynnöstä. Voit tehdä niin käyttämällä telakointiveto, kuten tämä:

$ sudo docker vedä ubuntua

Täydellinen, haettavissa oleva luettelo kuvista ja arkistoista on Docker Hubissa.

Docker-kuvat vs. kontit

Tässä vaiheessa on syytä kirjoittaa, miten kuvat, säiliöt ja vetoprosessi toimivat yhdessä.

Docker-kontit on rakennettu kuvia, jotka ovat lähinnä käyttöjärjestelmien kuoria, jotka sisältävät tarvittavat binäärit ja kirjastot sovellusten ajamiseksi säilössä.

Kuvat on merkitty tunnuksellatunnisteet, lähinnä metatiedot, jotka helpottavat kuvan eri versioiden tallentamista ja vetämistä. Luonnollisesti yksi kuva voidaan liittää useisiin tunnisteisiin: ubuntu: 16.04, ubuntu: xenial-20171201, ubuntu: muukalainen, ubuntu: viimeisin.

Kun kirjoitin telakointiasema vedä ubuntu Aiemmin vedin oletusarvoisen Ubuntun kuvan Ubuntun arkistosta, joka on merkitty kuva Viimeisin. Toisin sanoen komento telakointiasema vedä ubuntu vastaa docker pull ubuntu: viimeisin ja (tämän kirjoituksen aikaan) telakointiasema vedä ubuntu: xenial

Huomaa, että jos olisin kirjoittanut:

$ sudo docker pull -a ubuntu

Olisin puledl kaikki kuvat ( -a lippu) Ubuntu-arkistossa paikalliseen järjestelmääni. Suurimman osan ajasta haluat kuitenkin joko oletuskuvan tai tietyn version. Jos esimerkiksi haluat kuvan Ubuntu Saucy Salamanderille, käytä sitä telakointiveto -a ubuntu: kastuva noutaa kuva kyseisellä tagilla kyseisestä reposta.

Sama logiikka repojen ja tunnisteiden takana pätee muihin kuvankäsittelyihin. Jos vedit näpsäkkä kuten yllä olevassa esimerkissä, suoritat sen kirjoittamalla sudo-telakointiajo -i -t ubuntu: saucy / bin / bash. Jos kirjoitatsudo docker image rm ubuntu, poistaaksesi ubuntu kuvan, se poistaa vain merkityn kuvan Viimeisin . Jos haluat poistaa muita kuvia kuin oletusarvot, kuten Ubuntu Saucy, sinun on lisättävä asianmukainen tunniste:

sudo docker -kuvan rm ubuntu: kastuva

Docker-kuvan ja säilön työnkulku

Takaisin kuvien käsittelyyn. Kun olet vedä kuvan, niin se voi olla, luot siitä elävän säilön (kuten olen osoittanut) suorittamalla telakointiajo komento. Kun olet lisännyt ohjelmiston ja muuttanut kaikkia säilön sisäisiä asetuksia, voit luoda uuden kuvan näistä muutoksista käyttämällä telakka sitoutua komento.

On tärkeää huomata, että Docker tallentaa deltat tai muutokset vain muista kuvista rakennettuihin kuviin. Kun rakennat omia kuvia, vain peruskuvaan tekemäsi muutokset tallennetaan uuteen kuvaan, joka linkittää takaisin peruskuvaan kaikilla sen riippuvuuksilla. Näin voit luoda kuvia, joiden virtuaalikoko on 266 Mt, mutta jotka vievät vain muutaman megatavun levylle tämän tehokkuuden vuoksi.

Täysin määritetyt säilöt voidaan sitten viedä keskustietovarastoon käytettäväksi muualla organisaatiossa tai jopa jakaa julkisesti. Tällä tavalla sovelluskehittäjä voi julkaista julkisen säilön sovellukselle tai voit luoda yksityisiä arkistoja tallentamaan kaikki organisaatiosi sisäisesti käyttämät säilöt.

Luo uusi Docker-kuva säilöstä

Nyt kun sinulla on parempi käsitys kuvien ja säilöjen toiminnasta, perustetaan Apache-verkkopalvelinsäilö ja tehdään siitä pysyvä.

Aloita uudella Docker-kontilla

Ensin sinun on rakennettava uusi kontti. Voit tehdä tämän muutamalla tavalla, mutta koska sinulla on muutama komento suoritettavaksi, käynnistä juurikuori uudessa säilössä:

$ sudo-telakointiasema -i -t --name apache_web ubuntu / bin / bash

Tämä luo uuden säilön, jolla on yksilöllinen tunnus ja nimi apache_web. Se antaa sinulle myös juurikuoren, koska olet määrittänyt / bin / bash komentona ajaa. Asenna nyt Apache-verkkopalvelin apt-get:

root @ d7c8f02c3c8c: / # apt-get-päivitys

root @ d7c8f02c3c8c: / # apt-get install apache2

Huomaa, että sinun ei tarvitse käyttää sudo, koska olet juurtunut pääkäyttäjänä astian sisällä. Huomaa, että sinä tehdä täytyy juosta apt-get-päivitys, koska jälleen kerran pakettiluettelo astian sisällä ei ole sama kuin sen ulkopuolella.

Normaali apt-get Tulos tulee näkyviin, ja Apache2-paketti asennetaan uuteen säilöön. Kun asennus on valmis, käynnistä Apache, asenna curl ja testaa asennus, kaikki säilössäsi:

root @ d7c8f02c3c8c: / # service apache2 start

root @ d7c8f02c3c8c: / # apt-get install curl

root @ d7c8f02c3c8c: / # kihara // paikallinen isäntä

Viimeisen komennon jälkeen sinun pitäisi nähdä Apache-oletussivun raaka HTML-koodi konsolissa. Tämä tarkoittaa, että Apache-palvelimemme on asennettu ja toimii säilössäsi.

Jos teit tämän tuotantoympäristössä, määrität Apache seuraavaksi tarpeidesi mukaan ja asennat sovelluksen sen käyttöä varten. Säilön ulkopuolella olevat Docker-letd-hakemistot kartoitetaan sen sisällä oleville poluille, joten yksi tapa on tallentaa verkkosovelluksesi isännän hakemistoon ja tehdä siitä näkyvä säilölle kartoituksen avulla.

Luo käynnistyskomentosarja Docker-säilölle

Muista, että Docker-säilö toimii vain niin kauan kuin sen prosessi tai prosessit ovat aktiivisia. Joten jos prosessi, jonka aloitat, kun käynnistät säilön ensimmäisen kerran, siirtyy taustalle, kuten järjestelmämonikko, Docker pysäyttää säilön. Siksi sinun on suoritettava Apache etualalla, kun säiliö käynnistyy, jotta säilö ei poistu heti, kun se syttyy.

Luo komentosarja startapache.sh hakemistoon / usr / local / sbin:

# Sinun on ehkä ensin asennettava Nano säiliöön

root @ d7c8f02c3c8c: / # apt-get install nano

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

Lisää nämä rivit startapache.sh-tiedostoon:

#! / bin / bash

. / etc / apache2 / envvars

/ usr / sbin / apache2 -D EDELLINEN

Kirjoita muutokset ja tallenna tiedosto. Tee sitten suoritettava:

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

Kaikki tämä pieni komentosarja tuo vain sopivat ympäristömuuttujat Apachelle ja käynnistää Apache-prosessin etualalla.

Olet muokannut säilön sisältöä, joten voit poistua säilöstä kirjoittamalla poistua. Kun poistut kontista, kontti pysähtyy.

Luo uusi Docker-kuva sitoutamalla säilö

Nyt sinun täytyy tehdä säilöön tallentamaan tekemäsi muutokset:

$ sudo docker sitouttaa apache_web local: apache_web

Sitoutuminen tallentaa säilön uutena kuvana ja palauttaa yksilöllisen tunnuksen. Argumentti paikallinen: apache_web aiheuttaa sitoutumisen sijoittamiseen paikalliseen tietovarastoon nimeltä paikallinen tunnisteella apache_web.

Voit nähdä tämän suorittamalla komennon sudo-telakointikuvat:

TARVIKKEIDEN TAG-KUVATUNNUS LUOTTU VIRTUAALINEN KOKO

paikallinen apache_web d95238078ab0 4 minuuttia sitten 284.1 MB

Huomaa, että kuvan tarkat tiedot - kuvan tunnus, säilön koko - eroavat esimerkistäni.

Docker-kontit on suunniteltumuuttumaton. Aina kun teet muutoksia säilöön, tulokset kirjoitetaan kokonaan uuteen säilöön, ei koskaan alkuperäiseen. Jos haluat vaihtaa Apachen esimerkiksi Nginxin kanssa, aloitat alkuperäisellä ubuntu: viimeisin kontti, lisää siihen Nginx ja tallenna tulokset kokonaan uudena säilönä nimeltä paikallinen: nginx.

Ymmärrä Docker-verkon perustiedot

Nyt kun sinulla on kuvamme, voit aloittaa säilömme ja aloittaa sivujen tarjoamisen. Ennen kuin teet, anna minun kuitenkin selittää hetki, kuinka Docker käsittelee verkkotoimintaa.

Kun Docker asennetaan, se luo kolme virtuaaliverkkoa, joita Docker-säilöt voivat käyttää:

  • silta: Tämä on verkko, johon säilöt muodostavat yhteyden oletuksena. Siltaverkon avulla kontit voivat puhua keskenään suoraan, mutta eivät isäntäjärjestelmään.
  • isäntä: Tämän verkon avulla isäntä näkee säilöt suoraan, ikään kuin kaikki niiden sovellukset olisivat käynnissä paikallisena verkkopalveluna.
  • ei mitään: Tämä on pohjimmiltaan null- tai loopback-verkko. Säiliö, johon ei ole yhteyttä, ei näe muuta kuin itseään.

Kun haluat käynnistää säilön ja saada sen kommunikoimaan sekä muiden säilöjen että ulkomaailman kanssa, sinun on kartoitettava manuaalisesti kyseisen säilön portit isäntään. Esimerkkini vuoksi voit tehdä tämän komentorivillä, kun käynnistät uuden luomasi säilön:

$ sudo-telakointiasema -d -p 8080: 80 --name apache local: apache_web /usr/local/sbin/startapache.sh

Copyright fi.verticalshadows.com 2022