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:
Tulos 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: 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ö Ja vaihda tämä rivi: Tähän: Tallenna tiedosto ja suorita sitten: 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ä $ sudo docker ps Voit tarkastella kaikkia käytettävissä olevia komentoja yksinkertaisesti syöttämällä Kun juoksin Täydellinen, haettavissa oleva luettelo kuvista ja arkistoista on Docker Hubissa. 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: Kun kirjoitin Huomaa, että jos olisin kirjoittanut: Olisin puledl kaikki kuvat ( Sama logiikka repojen ja tunnisteiden takana pätee muihin kuvankäsittelyihin. Jos vedit Takaisin kuvien käsittelyyn. Kun olet vedä kuvan, niin se voi olla, luot siitä elävän säilön (kuten olen osoittanut) suorittamalla 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. Nyt kun sinulla on parempi käsitys kuvien ja säilöjen toiminnasta, perustetaan Apache-verkkopalvelinsäilö ja tehdään siitä pysyvä. 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ä: Tämä luo uuden säilön, jolla on yksilöllinen tunnus ja nimi root @ d7c8f02c3c8c: / # apt-get install apache2 Huomaa, että sinun ei tarvitse käyttää Normaali 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. 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: root @ d7c8f02c3c8c: / # apt-get install nano Lisää nämä rivit startapache.sh-tiedostoon: . / etc / apache2 / envvars / usr / sbin / apache2 -D EDELLINEN Kirjoita muutokset ja tallenna tiedosto. Tee sitten suoritettava: 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 Nyt sinun täytyy tehdä säilöön tallentamaan tekemäsi muutokset: Sitoutuminen tallentaa säilön uutena kuvana ja palauttaa yksilöllisen tunnuksen. Argumentti Voit nähdä tämän suorittamalla komennon 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ä 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ää: 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-telakointiaseman tiedot
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.$ sudo ufw-tila
PUDOTA
että HYVÄKSYÄ
. Voit tehdä tämän Nano-editorilla kirjoittamalla seuraavat:$ sudo nano / etc / default / ufw
DEFAULT_FORWARD_POLICY = "PUDOTUS"
DEFAULT_FORWARD_POLICY = "HYVÄKSY"
$ sudo ufw lataa
Työskentele Docker-kuvien ja Docker-konttien kanssa
telakka ps
komento:# Tämä komento näyttää KAIKKI järjestelmän kontit
$ sudo docker ps -a
# Tämä näyttää vain RUNNING-kontit
satamatyöläinen
. Katso kaikkien komentojen, niiden vaihtoehtojen ja täydellisten kuvausten ajan tasalla oleva luettelo virallisesta komentorivin asiakasdokumentaatiosta.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
Docker-kuvat vs. kontit
ubuntu: 16.04
, ubuntu: xenial-20171201
, ubuntu: muukalainen
, ubuntu: viimeisin
.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
. $ sudo docker pull -a ubuntu
-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.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
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.Luo uusi Docker-kuva säilöstä
Aloita uudella Docker-kontilla
$ sudo-telakointiasema -i -t --name apache_web ubuntu / bin / bash
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
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.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
Luo käynnistyskomentosarja Docker-säilölle
# Sinun on ehkä ensin asennettava Nano säiliöön
root @ d7c8f02c3c8c: / # nano /usr/local/sbin/startapache.sh
#! / bin / bash
root @ d7c8f02c3c8c: / # chmod + x /usr/local/sbin/startapache.sh
poistua
. Kun poistut kontista, kontti pysähtyy.Luo uusi Docker-kuva sitoutamalla säilö
$ sudo docker sitouttaa apache_web local: apache_web
paikallinen: apache_web
aiheuttaa sitoutumisen sijoittamiseen paikalliseen tietovarastoon nimeltä paikallinen
tunnisteella apache_web
.sudo-telakointikuvat
:TARVIKKEIDEN TAG-KUVATUNNUS LUOTTU VIRTUAALINEN KOKO
ubuntu: viimeisin
kontti, lisää siihen Nginx ja tallenna tulokset kokonaan uudena säilönä nimeltä paikallinen: nginx
.Ymmärrä Docker-verkon perustiedot
$ sudo-telakointiasema -d -p 8080: 80 --name apache local: apache_web /usr/local/sbin/startapache.sh