Docker-opas aloittelijoille
Docker-oppaassamme esittelemme Docker-virtualisointialustan ja opastamme sinua Docker-ohjelmiston käytössä Ubuntu 22.04 -järjestelmässä helppotajuisten ohjeiden avulla.
Dockerin rakenne ja ominaisuudet
”Kehitä, julkaise ja käytä mitä tahansa sovellusta missä tahansa” – tämä on Docker-alustan motto. Tämä avoimen lähdekoodin konttialusta tarjoaa joustavan ja resurssitehokkaan vaihtoehdon virtuaalikoneisiin (VM) perustuvalle laitteistokomponenttien emuloinnille.
Perinteinen laitteistovirtualisointi perustuu useiden vieraskoneiden käynnistämiseen yhteisellä isäntäkoneella, kun taas Docker-sovellukset suoritetaan erillisinä prosesseina samalla järjestelmällä konttien avulla. Tätä kutsutaan konttipohjaiseksi virtualisoinniksi, jota kutsutaan myös käyttöjärjestelmätason virtualisoinniksi.

Konttipohjaisen virtualisoinnin yksi suuri etu on se, että erilaisilla vaatimuksilla varustetut sovellukset voivat toimia toisistaan erillään ilman erillisen vierasjärjestelmän aiheuttamaa ylimääräistä kuormitusta. Lisäksi konttien avulla sovelluksia voidaan ottaa käyttöön eri alustoilla ja erilaisissa infrastruktuureissa ilman, että niitä tarvitsee mukauttaa isäntäjärjestelmän laitteisto- tai ohjelmistokokoonpanoihin.
Docker on suosituin ohjelmistoprojekti, joka tarjoaa käyttäjille konttipohjaista virtualisointiteknologiaa. Tämä avoimen lähdekoodin alusta perustuu kolmeen peruskomponenttiin. Konttien suorittamiseen käyttäjät tarvitsevat vain Docker-moottorin sekä erityisiä Docker-kuvia, joita voi hankkia Docker Hubista tai luoda itse.
Docker-kuvat
Virtuaalikoneiden tavoin Docker-kontit perustuvat Docker-kuviin. Kuva on vain luku -muotoinen malli, joka sisältää kaikki ohjeet, joita Docker-moottori tarvitsee kontin luomiseen. Docker-kuva on kontin siirrettävä kuva tekstitiedostomuodossa, jota kutsutaan myös Dockerfile-tiedostoksi. Jos kontti on tarkoitus käynnistää järjestelmässä, ladataan ensin kyseisen kuvan sisältävä paketti, ellei sitä ole jo paikallisesti. Ladattu kuva tarjoaa tarvittavan tiedostojärjestelmän, mukaan lukien kaikki ajon aikaiset parametrit. Konttia voidaan pitää kuvan käynnissä olevana prosessina.
Docker Hub
Docker Hub on pilvipohjainen rekisteri ohjelmistovarastoille, eräänlainen kirjasto Docker-kuville. Verkkopalvelu on jaettu julkiseen ja yksityiseen osioon. Julkisessa osiossa käyttäjät voivat ladata itse kehittämiään kuvia ja jakaa niitä yhteisön kanssa. Täältä löytyy useita virallisia kuvia, jotka ovat peräisin Docker-kehitystiimiltä ja vakiintuneilta avoimen lähdekoodin projekteilta. Rekisterin yksityiseen osioon ladatut kuvat eivät ole julkisesti saatavilla, joten niitä voidaan jakaa esimerkiksi yrityksen sisäpiirissä tai ystävien ja tuttavien kesken. Docker Hubiin pääsee osoitteessa hub.docker.com.
Docker-moottori
Docker-projektin ytimessä on Docker-moottori. Kyseessä on avoimen lähdekoodin asiakaspalvelinsovellus, jonka nykyinen versio on kaikkien käyttäjien saatavilla kaikilla vakiintuneilla alustoilla.
Docker-moottorin perusrakenne jakautuu kolmeen osaan: palvelintoimintoja suorittava taustaprosessi, REST-ohjelmointimallin (Representational State Transfer) pohjalta kehitetty sovellusliittymä (API) sekä käyttöjärjestelmän komentorivi (CLI), joka toimii käyttöliittymänä (asiakas).
- Docker-daemon: Docker-moottorin palvelimena toimii daemon-prosessi. Docker-daemon toimii isäntäjärjestelmän taustalla, ja sitä käytetään Docker-moottorin keskitettyyn hallintaan. Tämä toiminto luo ja hallinnoi kaikkia kuvia, kontteja ja verkkoja.
- REST-API: REST-API määrittelee joukon rajapintoja, joiden avulla muut ohjelmat voivat kommunikoida Docker-daemonin kanssa ja antaa sille ohjeita. Yksi näistä ohjelmista on käyttöjärjestelmän terminaali.
- Terminaali: Docker käyttää asiakasohjelmana käyttöjärjestelmän terminaalia. Tämä on integroitu Docker-daemoniin REST-API:n kautta, minkä ansiosta käyttäjät voivat hallita sitä skriptien tai käyttäjän syöttämien komentojen avulla.
Vuonna 2017 Docker-moottori nimettiin uudelleen Docker Community Editioniksi (lyhennettynä Docker CE), mutta virallisessa dokumentaatiossa ja Docker-pakettivarastoissa käytetään edelleen pääosin vanhaa nimeä. Docker CE:n lisäksi on olemassa myös Docker Enterprise Edition (Docker EE), joka sisältää joitakin lisäominaisuuksia. Se ei kuitenkaan ole ilmainen, ja se sopii paremmin yrityskäyttöön.
Docker-komentojen avulla käyttäjän ohjelmistokontteja voidaan käynnistää, pysäyttää ja hallita suoraan terminaalista. Daemonia ohjataan komennolla docker ja ohjeilla kuten build, pull tai run. Asiakas ja palvelin voivat sijaita samassa järjestelmässä. Käyttäjillä on myös mahdollisuus käyttää toisessa järjestelmässä olevaa Docker-daemonia. Muodostettavan yhteyden tyypistä riippuen asiakkaan ja palvelimen välinen viestintä tapahtuu REST-API:n, UNIX-socketien tai verkkoliitännän kautta.
Seuraava kaavio havainnollistaa yksittäisten Docker-komponenttien vuorovaikutusta esimerkkikomentojen docker build, docker pull ja docker run avulla:

Komento docker build ohjeistaa Docker-daemonia luomaan kuvan (katkoviiva). Tätä varten tarvitaan vastaava Dockerfile-tiedosto. Jos kuvaa ei haluta luoda, vaan ladata Docker Hubin arkistosta, käytetään komentoa docker pull (katkoviiva). Jos Docker-daemonille annetaan komennolla docker run käsky käynnistää kontti, taustaohjelma tarkistaa, onko vastaava konttikuva saatavilla paikallisesti. Jos on, kontti käynnistetään (yhtenäinen viiva). Jos daemon ei löydä kuvaa, se käynnistää automaattisesti latauksen arkistosta.
Docker-työskentely
Nyt on aika tutustua konttialustan sovelluksiin. Jos et ole vielä asentanut Docker-moottoria, voit tehdä sen Linux-terminaalin kautta. Ohjeet asennukseen löydät artikkelistamme”Docker-moottorin asentaminen Ubuntu 22.04:ään”. Seuraavassa kerrotaan, miten Docker-moottoria hallitaan terminaalista, mitä hyötyä Docker Hubista on ja miksi Docker-kontit voivat mullistaa tavan, jolla työskentelet sovellusten parissa.
Kuinka hallita Docker-moottoria
Ubuntu on käyttänyt prosessien hallintaan taustaprogrammia systemd(lyhenne sanoista ”system daemon”) versiosta 16.04 lähtien.Systemd onkäynnistysprosessi, jota käytetään myös muissa Linux-jakeluissa, kuten RHEL:ssä, CentOS:ssa tai Fedorassa. Yleensäsystemd saaprosessitunnuksen 1. Järjestelmän ensimmäisenä prosessina tämä taustaprosessi vastaa kaikkien seuraavien prosessien käynnistämisestä, valvonnasta ja lopettamisesta. Aikaisemmissa Ubuntu-versioissa (14.10 ja vanhemmat) taustaohjelmaupstart hoitaa tämän tehtävän.
Docker-daemonia voidaan hallita myös systemd:n kautta. Vakioasennuksessa konttialusta on määritetty siten, että daemon käynnistyy automaattisesti järjestelmän käynnistyessä. Tätä oletusasetusta voidaan muokata komentorivityökalun systemctl avulla.
Systemctl:n avulla voit lähettää systemd: lle komentoja prosessin hallitsemiseksi tai sen tilan kyselemiseksi. Tällaisen komennon syntaksi on seuraava:
systemctl [OPTION] [COMMAND]bashJotkin komennot viittaavat tiettyihin resursseihin (esimerkiksi Docker). Systemd:n terminologiassa näitä kutsutaan yksiköiksi. Tällöin komento muodostuu kyseisestä ohjeesta ja sen yksikön nimestä, johon komento kohdistuu.
Jos haluat ottaa Docker-daemonin automaattisen käynnistyksen käyttöön (enable) tai poistaa sen käytöstä (disable), käytä komentorivityökalua systemctl seuraavilla komennoilla:
sudo systemctl enable docker
sudo systemctl disable dockerbashKomentorivityökalun systemctl avulla voit tarkistaa yksikön tilan:
sudo systemctl status dockerbashJos Docker-moottori on käynnissä Ubuntu-järjestelmässäsi, terminaalin tuloste näyttää seuraavan kuvakaappauksen kaltaiselta:

Jos Docker-moottori on tällä hetkellä pois käytöstä, saat tilailmoituksen inactive (dead). Tällöin sinun on käynnistettävä Docker-daemon manuaalisesti, jotta kontteja voidaan käyttää.

Jos haluat käynnistää, pysäyttää tai käynnistää Docker-moottorin uudelleen manuaalisesti, anna systemd:lle jokin seuraavista komennoista.
Käynnistä poistettu palvelin käyttämällä systemctl-komentoa yhdessä komennon start kanssa:
sudo systemctl start dockerbashJos Docker-palvelin on tarkoitus lopettaa, käytä sen sijaan komentoa stop:
sudo systemctl stop dockerbashMoottorin uudelleenkäynnistys käynnistyy komennolla restart:
sudo systemctl restart dockerbashDocker Hubin käyttö
Jos Docker-moottori on konttialustan sydän, Docker Hub on avoimen lähdekoodin projektin sielu. Se on yhteisön kohtaamispaikka. Pilvipohjaisesta rekisteristä käyttäjät löytävät kaiken, mitä tarvitsevat Docker-asennuksensa käynnistämiseen.
Verkkopalvelu tarjoaa monipuolisia virallisia sovellusarkistoja, joissa on yli 100 000 ilmaista sovellusta. Käyttäjät voivat luoda kuvakirjaston ja käyttää sitä yhdessä työryhmien kanssa. Kehitystiimin tarjoaman ammattimaisen tuen lisäksi aloittelijat löytävät täältä yhteyksiä käyttäjäyhteisöön. GitHubissa on käytettävissä foorumi yhteisön tukea varten.

Rekisteröityminen Docker Hubiin
Rekisteröityminen Docker Hubiin on ilmaista. Käyttäjät tarvitsevat vain sähköpostiosoitteen ja valitsemansa Docker-tunnuksen. Tämä toimii myöhemmin henkilökohtaisena tallennustilan nimitilana ja antaa käyttäjille pääsyn kaikkiin Docker-palveluihin. Tällä hetkellä tarjous sisältää Docker Hubin lisäksi Docker Cloudin, Docker Storen ja valikoituja beta-ohjelmia. Sen avulla Docker-tunnusta voidaan käyttää kirjautumistunnuksena Docker-tukikeskukseen sekä Docker Success -portaaliin ja Docker-foorumiin.
Rekisteröitymisprosessi koostuu viidestä vaiheesta:
- Valitse Docker-tunnuksesi: Valitse hakemuksen ensimmäisessä vaiheessa käyttäjätunnus, jota käytetään myöhemmin henkilökohtaisena Docker-tunnuksena.
- Syötä sähköpostiosoite: Syötä nykyinen sähköpostiosoitteesi. Huomaa, että sinun on vahvistettava rekisteröitymisesi Docker Hubiin sähköpostitse.
- Valitse salasana: Valitse salainen salasana.
- Lähetä rekisteröitymisesi: Napsauta ”Rekisteröidy” lähettääksesi rekisteröitymisesi. Kun tiedot on lähetetty, Docker lähettää linkin sähköpostiosoitteeseesi, jotta voit vahvistaa sähköpostiosoitteesi.
- Vahvista sähköpostiosoitteesi: Vahvista sähköpostiosoitteesi napsauttamalla vahvistuslinkkiä.
Docker-projektin verkkopalvelut ovat käytettävissä heti, kun olet rekisteröitynyt selaimessa. Täällä voit luoda arkistoja ja työryhmiä tai etsiä Docker Hubista julkisia resursseja ”Explore”-toiminnon avulla.

Voit kirjautua sisään myös suoraan käyttöjärjestelmän komentoriviltä komennolla docker login. Yksityiskohtainen kuvaus komennosta löytyy Docker-ohjeista.
Periaatteessa Docker Hub on käytettävissä myös niille, joilla ei ole tiliä tai Docker-tunnusta. Tällöin on kuitenkin mahdollista ladata vain julkisten arkistojen kuvia. Omien kuvien lataaminen (push) ei ole mahdollista ilman Docker-tunnusta.
Luo arkistoja Docker Hubissa
Ilmainen Docker Hub -tili sisältää yhden yksityisen arkiston ja tarjoaa mahdollisuuden luoda rajattomasti julkisia arkistoja. Jos tarvitset lisää yksityisiä arkistoja, voit avata ne maksullisella päivityksellä.
Luo arkisto seuraavasti:
- Valitse nimitila: Uudet arkistot liitetään automaattisesti Docker-tunnuksesi nimitilaan. Voit myös syöttää sen organisaation tunnuksen, johon kuulut.
- Nimeä arkisto: Anna nimi äskettäin luodulle arkistolle.
- Lisää kuvaus: Lisää lyhyt kuvaus arkistostasi.
- Määritä näkyvyys: Päätä, onko arkisto julkisesti näkyvä (julkinen) vai vain sinun tai organisaatiosi käytettävissä (yksityinen).
Vahvista syöttämäsi tiedot napsauttamalla ”Luo”.

Luo tiimejä ja organisaatioita
Hubin avulla Docker tarjoaa pilvipohjaisen alustan, jolla itse luotuja kuvia hallitaan keskitetysti ja jaetaan kätevästi työryhmille. Docker-terminologiassa näitä kutsutaan organisaatioiksi. Aivan kuten käyttäjätileillä, myös organisaatioille annetaan yksilölliset tunnisteet, joiden kautta kuvia voidaan jakaa ja ladata. Organisaation sisäiset oikeudet ja roolit voidaan määrittää tiimien kautta. Esimerkiksi ”Owners”-tiimiin määritetyillä käyttäjillä on oikeus luoda yksityisiä tai julkisia arkistoja sekä myöntää käyttöoikeuksia.
Työryhmiä voi myös luoda ja hallita suoraan hallintapaneelin kautta. Lisätietoja organisaatioista ja tiimeistä löytyy Docker-ohjeista.
Kuvien ja säilytysastioiden käsittely
Docker Hub on virallisten Docker-resurssien ensisijainen lähde, ja se toimii lähtökohtanamme tässä kuvien ja konttien käsittelyä käsittelevässä esittelyssä. Kehitystiimi on julkaissut esittelykuvan nimeltä whalesay, jota käytämme seuraavan Docker-oppaamme pohjana.
Lataa Docker-kuvat
Whalesay -kuvan löydät käymällä Docker Hubin verkkosivustolla ja kirjoittamalla hakukenttään Docker-logon vieressä sanan ”whalesay ”.

Napsauta hakutuloksissa resurssia, jonka otsikko on docker/whalesay, jotta pääset tämän kuvan julkiseen arkistoon.
Docker-arkistot on aina rakennettu saman kaavan mukaan. Sivun yläosassa käyttäjät näkevät kuvan nimen, arkiston luokan sekä viimeisimmän latauksen ajankohdan (last pushed).

Jokaisessa Docker-arkistossa on myös seuraavat tietoruudut:
- Kuvaus: Yksityiskohtainen kuvaus, joka sisältää yleensä käyttöohjeet
- Docker pull -komento: Komentorivikomento, jota käytetään kuvan lataamiseen arkistosta (
pull) - Omistaja: Tiedot arkiston luojasta
- Kommentit: Sivun lopussa oleva kommenttiosio
Repositorion tietokenttien mukaan whalesay on muunnos avoimen lähdekoodin Perl-skriptistä cowsay. Tony Monroen vuonna 1999 kehittämä ohjelma luo lehmän muotoisen ASCII-kuvion, joka näkyy käyttäjän päätelaitteessa viestin yhteydessä.
Lataa docker/whalesay seura docker pullalla komennolla:
docker pull [OPTIONS] NAME [:TAG|@DIGEST]bashKomento docker pull ohjeistaa daemonia lataamaan kuvan arkistosta. Määrität kuvan syöttämällä kuvan nimen (NAME). Voit myös ohjeistaa Dockerille, miten haluttu komento tulisi suorittaa (OPTIONS). Valinnaisia syötteitä ovat tunnisteet (:TAG) ja yksilölliset tunnistenumerot (@DIGEST), joiden avulla voit ladata kuvan tietyn version.
Paikallinen kopio docker/whalesay-kuvasta ladataan seuraavalla komennolla:
docker pull docker/whalesaybashYleensä voit ohittaa tämän vaiheen. Jos haluat käynnistää kontin, Docker-palvelin lataa automaattisesti tallennustilasta ne kuvat, joita se ei löydä paikallisesta järjestelmästä.
Käynnistä Docker-kuvat kontteina
Käynnistä Docker-kuva docker run komennolla:
docker run [OPTIONS] IMAGE [:TAG|@DIGEST] [CMD] [ARG...]bashdocker run ainoa pakollinen osa on halutun Docker-kuvan nimi. Kun käynnistät kontin, voit kuitenkin määrittää myös lisäasetuksia, TAG-tunnisteita ja DIGEST-tunnisteita. Lisäksi docker run voidaan yhdistää muihin komentoihin, jotka suoritetaan heti kontin käynnistyessä. Tällöin CMD (COMMAND, jonka kuvan luoja on määrittänyt ja joka suoritetaan automaattisesti kontin käynnistyessä) korvataan. Muita valinnaisia asetuksia voidaan määrittää lisäargumenteilla (ARG…). Tämä mahdollistaa esimerkiksi käyttäjien lisäämisen tai ympäristömuuttujien siirtämisen.
Käytä komentorivikomentoa
docker run docker/whalesay cowsay boobashlataamaan olemassa olevan Perl-skriptin kuvatiedostona ja suorittamaan sen kontissa. Huomaat, että whalesay eroaa huomattavasti alkuperäisestä skriptistä.

Kun docker/whalesay-kuva suoritetaan, skripti tulostaa valaan muotoisen ASCII-kuvion sekä tekstiviestin ”boo”, joka on annettu terminaalissa cowsay -komennolla.
Kuten koeajon yhteydessä, daemon etsii ensin haluttua kuvaa paikallisesta tiedostohakemistosta. Koska samannimistä pakettia ei löydy, aloitetaan kuvan lataaminen Docker-arkistosta. Sen jälkeen daemon käynnistää muokatun cowsay-ohjelman. Kun ohjelma on suoritettu loppuun, kontti suljetaan automaattisesti.
Kuten cowsay, myös Docker-ohjelmiston whalesay tarjoaa mahdollisuuden puuttua ohjelman kulkuun ja vaikuttaa terminaalin tekstilähtöön. Kokeile tätä toimintoa korvaamalla output-komennon sana ”boo” millä tahansa merkkijonolla tai esimerkiksi tylsällä valasvitsillä.
sudo docker run docker/whalesay cowsay What did the shark say to the whale? What are you blubbering about?bash
Näytä kaikki paikallisessa järjestelmässä olevat Docker-kuvat
Jos et ole varma, oletko jo ladannut tietyn kuvan, voit tarkastella luetteloa kaikista paikallisessa järjestelmässäsi olevista kuvista. Käytä seuraavaa komentorivikomentoa:
sudo docker imagebashKomento docker images (vaihtoehto docker image ls) tulostaa kaikki paikalliset kuvat, mukaan lukien tiedostokoon, tunnisteen ja kuvan tunnisteen.

Kun käynnistät kontin, sen pohjana oleva kuva ladataan kopiona arkistosta ja tallennetaan pysyvästi tietokoneellesi. Tämä säästää aikaa, jos haluat käyttää kuvaa myöhemmin. Uusi lataus käynnistyy vain, jos kuvan lähde muuttuu, esimerkiksi jos arkistosta on saatavilla uusi versio.
Näytä kaikki paikallisessa järjestelmässä olevat säilytysastiat
Jos haluat saada yleiskatsauksen kaikista järjestelmässäsi käynnissä olevista tai aiemmin käynnissä olleista kontteista, käytä komentorivikomentoa docker ps yhdessä vaihtoehdon --all kanssa (lyhenne: -a):
sudo docker ps -abash
Terminaalin tuloste sisältää tietoja, kuten kyseisen kontin tunnisteen, sen perustana olevan kuvan, kontin käynnistyksen yhteydessä suoritetun komennon, kontin käynnistysajan sekä tilan.
Jos haluat näyttää vain ne kontit, jotka ovat tällä hetkellä käynnissä järjestelmässäsi, käytä komentorivikomentoa docker ps ilman muita vaihtoehtoja:
sudo docker psbashTällä hetkellä järjestelmässäsi ei kuitenkaan pitäisi olla käynnissä olevia kontteja.
Luo Docker-kuvia
Docker-oppaassamme on jo kerrottu, miten löydät kuvia Docker Hubista, lataat ne ja suoritat ne millä tahansa järjestelmällä, johon Docker-moottori on asennettu. Dockerilla pääset kuitenkin käsiksi paitsi rekisterissä olevaan laajaan sovellusvalikoimaan, myös moniin eri vaihtoehtoihin omien kuvien luomiseen ja niiden jakamiseen muiden kehittäjien kanssa.
Tämän Docker-oppaiden johdantokappaleissa olet jo oppinut, että jokainen Docker-kuva perustuu Dockerfile-tiedostoon. Voit ajatella Dockerfile-tiedostoja eräänlaisina kuvien rakennusmallina. Ne ovat yksinkertaisia tekstitiedostoja, jotka sisältävät kaikki ohjeet, joita Docker tarvitsee kuvan luomiseen. Seuraavissa vaiheissa opit kirjoittamaan tällaisen Dockerfile-tiedoston ja ohjeistamaan Dockeria käyttämään sitä oman kuvasi pohjana.
- Luo uusi kansio: Docker-kehitystiimi suosittelee, että jokaiselle Dockerfile-tiedostolle luodaan oma kansio. Kansiot on helppo luoda Linux-käyttöjärjestelmässä komentoriviltä. Luo kansio nimeltä mydockerbuild seuraavalla komentorivikomennolla:
mkdir mydockerbuildbash
- Siirry uuteen hakemistoon: Siirry äskettäin luotuun työkansioon komennolla
cd.
cd mydockerbuildbash
- Luo uusi tekstitiedosto: Ubuntussa voit luoda tekstitiedostoja helposti myös terminaalin kautta. Käytä tähän esimerkiksi Nano- tai Vim-editoria. Luo mydockerbuild-hakemistoon tekstitiedosto nimeltä Dockerfile.
nano Dockerfilebash
- Kirjoita Dockerfile: Äskettäin luotu tekstitiedosto toimii itse kehitettävän kuvan rakennusohjeena. Sen sijaan, että ohjelmoisimme kuvan alusta asti, käytämme tässä Docker-oppaassa esittelykuvaa docker/whalesay mallina. Se sisällytetään Dockerfile-tiedostoon FROM-komennolla. Käytä tunnistetta :latest viitataksesi kuvan uusimpaan versioon.
FROM docker/whalesay:latestTähän mennessä docker/whalesay on toiminut niin, että olet itse syöttänyt sille sanat. Terminaalissa näkyy syöttämäsi teksti yhdessä kontin käynnistyskomennon kanssa. Olisi kuitenkin mielenkiintoisempaa, jos skripti luo uuden tekstin automaattisesti. Tämä voidaan toteuttaa esimerkiksi käyttämällä fortunes-ohjelmaa, joka löytyy jokaisesta Linux-järjestelmästä. Fortunesin perustoiminto on luoda onnenkeksien sanontoja ja humoristisia aforismeja. Käytä seuraavaa komentoa päivittääksesi nykyisen paikallisen pakettihakemistosi ja asentaaksesi fortunes-ohjelman:
RUN apt-get -y update && apt-get install -y fortunesMääritä sitten CMD-komento. Se suoritetaan RUN-kom ennon jälkeen, ellei sitä ole ohitettu call (docker run image CMD) -komennolla. Käytä seuraavaa komentoa, jotta fortunes-ohjelma suoritetaan -a htoehdolla (”Valitse kaikista tietokannoista”) ja tulos näytetään terminaalissa cowsay -ohjelman avulla:
CMD /usr/games/fortune -a | cowsayDockerfile-tiedostosi tulisi näyttää seuraavalta:
FROM docker/whalesay:latest
RUN apt-get -y update && apt-get install -y fortunes
CMD /usr/games/fortune -a | cowsayHuomautus: Dockerfile-tiedoston komennot kirjoitetaan aina yhden rivivälin välein, ja ne alkavat aina avainsanalla. Syntaksi ei erota isoja ja pieniä kirjaimia, joten kirjoitustavalla ei ole merkitystä. Avainsanojen kirjoittamisessa on kuitenkin vakiintunut tietty käytäntö.

- Tallenna tekstitiedosto: Tallenna syöttämäsi tiedot. Jos käytät Nano-editoria, tallenna painamalla näppäinyhdistelmää [CTRL] + [O] ja vahvista painamalla [ENTER]. Nano ilmoittaa, että valittuun tiedostoon on kirjoitettu kolme riviä. Sulje tekstieditori painamalla näppäinyhdistelmää [CTRL] + [X].
- Luo kuva Dockerfile-tiedostosta: Luo kuva Dockerfile-tiedostosta siirtymällä ensin hakemistoon, jossa tekstitiedosto sijaitsee. Aloita kuvan luominen komentorivikomennolla
docker build. Jos haluat nimetä kuvan erikseen tai antaa sille tunnisteen, käytä vaihtoehtoa-tja kirjoita sen jälkeen haluamasi nimen ja tunnisteen yhdistelmä. Vakiomuoto onname:tag.
Tässä esimerkissä tulisi luoda kuva, jonka nimi on docker-whale:
docker build -t docker-whale .bashViimeinen kohta osoittaa, että kyseinen Dockerfile sijaitsee valitussa hakemistossa. Voit myös määrittää lähdetiedostojen tiedostopolun tai URL-osoitteen.
Kompilointiprosessi käynnistyy heti, kun komento vahvistetaan painamalla [ENTER]. Ensin Docker-palvelin tarkistaa, onko sillä kaikki kuvan luomiseen tarvittavat tiedostot. Docker-terminologiassa tätä kutsutaan yleisesti termillä ”konteksti”.
Sitten etsitään docker/whalesay -kuva, jonka tunniste on :latest:
Jos kuvan luomiseen tarvittava konteksti on jo kokonaisuudessaan olemassa, Docker-daemon käynnistää FROM-komennolla liitetyn kuvamallin väliaikaisessa kontissa ja siirtyy Dockerfile-tiedoston seuraavaan komentoon. Tässä esimerkissä kyseessä on RUN-komento, joka asentaa fortunes-ohjelman.
Kuvien luomisprosessin jokaisen vaiheen lopussa Docker antaa sinulle tunnisteen kyseisessä vaiheessa luodulle kerrokselle. Tämä tarkoittaa, että jokainen taustalla olevan Dockerfile-tiedoston rivi vastaa siitä rakennetun kuvan yhtä kerrosta.
Kun RUN-komento on suoritettu loppuun, Docker-daemon pysäyttää sille luodun kontin, poistaa sen ja käynnistää uuden väliaikaisen kontin CMD-lauseen kerrokselle. Luomisprosessin päätyttyä myös tämä väliaikainen kontti lopetetaan ja poistetaan. Docker ilmoittaa uuden kuvan tunnisteen:
Successfully built a8f2048c9ab8
Juuri luomasi kuva löytyy nimellä docker-whale paikallisesti tallennettujen kuvien luettelosta.
sudo docker imagesbash
Jos haluat käynnistää kontin juuri luomastasi kuvasta, käytä komentorivikomentoa sudo docker run yhdessä kuvan nimen kanssa:
sudo docker run docker-whalebashJos kuva on luotu oikein Dockerfile-tiedoston avulla, valas pitäisi nyt inspiroida sinua enemmän tai vähemmän viisailla sanoilla. Huomautus: Aina kun käynnistät kontin uudelleen, syntyy uusi lause.

Merkitse Docker-kuvat ja lataa ne Docker Hubiin
Jos haluat ladata oman docker-whale-kuvasi hubiin ja asettaa sen yhteisön tai työryhmän saataville, sinun on ensin linkitettävä se samannimiseen arkistoon omassa henkilökohtaisessa nimitilassasi. Docker-terminologiassa tätä vaihetta kutsutaan taggaamiseksi.
Voit julkaista kuvan Docker Hubissa seuraavasti:
- Luo arkisto: Kirjaudu Docker Hubiin Docker-tunnuksellasi ja salasanallasi ja luo julkinen arkisto nimellä docker-whale.

- Määritä kuvan tunniste: Määritä mukautetun docker-whale-kuvan tunniste komentorivikomennolla
docker images.

Tässä tapauksessa kuvan tunniste on a8f2048c9ab8. Tarvitsemme tätä seuraavassa vaiheessa tapahtuvaa merkitsemistä varten.
- Merkitse kuva: Merkitse docker-whale-kuva komentoriviohjelman
docker tagavulla seuraavasti:
sudo docker tag [Image-ID][Docker-ID]/[Image-Name]:[TAG]bashTässä esimerkissä merkitsemistä koskeva komentorivikomento on seuraava:
sudo docker tag a8f2048c9ab8 [Namespace]/docker-whale:latestbashVoit tarkistaa docker images yleiskatsauksen avulla, oletko merkinnyt kuvasi oikein. Repositorion nimessä pitäisi nyt näkyä Docker-tunnuksesi.

- Lataa kuva: Voit ladata kuvan kirjautumalla ensin Docker Hubiin. Tämä onnistuu
docker loginkomennolla.
sudo docker loginbashTämän jälkeen pääte pyytää sinua antamaan käyttäjätunnuksesi (Docker-tunnuksen) ja salasanasi.

Jos kirjautuminen onnistui, lataa kuva äskettäin luotuun arkistoon käyttämällä komentorivikomentoa docker push.
sudo docker push [Namespace]/docker-whalebashLataaminen kestää vain muutaman sekunnin. Nykyinen tila näkyy terminaalissa.

Kirjaudu Docker Hubiin selaimella, jotta voit tarkastella ladattua kuvaa.
![Docker hub: The repository [Namespace]/docker-whale in the detailed view Kuva: Docker hub: The repository [Namespace]/docker-whale in the detailed view](https://www.ionos.com/fi-fi/digitalguide/fileadmin/_processed_/5/e/csm_docker-hub-push-result_56530d8ebc.webp)
Jos haluat ladata useamman kuin yhden kuvan kutakin arkistoa kohti, käytä erilaisia tunnisteita, jotta kuvasi ovat saatavilla eri versioina. Esimerkiksi:
[Namespace]/docker-whale:latest
[Namespace]/docker-whale:version1
[Namespace]/docker-whale:version2Yleiskatsaus eri kuvaversioista löytyy Docker Hub -arkistosta ”Tags”-välilehdeltä.

Eri hankkeiden kuvat tulisi kuitenkin tarjota erillisissä arkistoissa.
Jos tiedoston lähetys onnistui, mukautettu kuvasi on nyt julkisen arkiston kautta kaikkien Docker-käyttäjien saatavilla ympäri maailmaa.
- Kokeilu: Tarkista, onko tiedoston lähetys onnistunut, yrittämällä ladata kuva.
Huomaa, että paikallinen versio kuvasta on ensin poistettava, jotta uusi kopio samalla tunnisteella voidaan ladata. Muussa tapauksessa Docker ilmoittaa, että haluttu kuva on jo olemassa nykyisessä versiossa.

Poistaaksesi paikallisen Docker-kuvan, käytä komentorivikomentoa docker rmi yhdessä kyseisen kuvan tunnisteen kanssa. Tunniste määritetään tavalliseen tapaan komennolla docker images. Jos Docker ilmoittaa ristiriidasta, esimerkiksi siksi, että kuvan tunniste on käytössä useammassa kuin yhdessä arkistossa tai sitä käytetään kontissa, toista komento lisäämällä siihen vaihtoehto --force (lyhennettynä*-f* ) pakottaaksesi poiston.
sudo docker rmi -f a8f2048c9ab8bash
Näytä jälleen yhteenveto kaikista paikallisista kuvista:
sudo docker ImagesbashPoistettujen osien ei pitäisi enää näkyä terminaalin tulosteessa. Lataa nyt arkistossa annettu pull-komento käyttämällä uusi kopio kuvasta Docker Hubista.
sudo docker pull [Namespace]/docker-whalebash
Muita Docker-aiheita ja oppaita
Docker-maailma on laaja, ja ajan myötä Docker-työkaluista on kehittynyt elävä ekosysteemi. Docker on erityisen hyödyllinen järjestelmänvalvojille, varsinkin jos he hallinnoivat monimutkaisia sovelluksia, joissa useita kontteja toimii rinnakkain eri järjestelmissä. Docker tarjoaa monipuolisia toimintoja tällaisten klusterien hallintaan. Lisätietoja aiheesta löytyy artikkelistamme, joka käsittelee Docker-klusterien hallintaa Swarm- ja Compose-työkalujen avulla.
Digitaalisessa oppaassa on lisää opetusohjelmia Docker-työskentelyyn:
- Docker-arkiston määrittäminen
- Docker-konttien levyt
- Docker: Varmuuskopiointi ja palautus
- Docker-ohjelmiston asentaminen ja käyttäminen Linux-palvelimella
- Docker Compose -opas
Docker sopii monenlaisiin käyttötarkoituksiin. Digitaalisesta oppaasta löydät seuraavat oppaat:
- WordPressin käyttöönotto Docker-kontteissa
- VPN:n käyttö Docker-kontissa SoftEtherin avulla
- Nextcloudin asennus Dockerilla
- Portainerin asentaminen Dockerissa
- Redis Docker-kontteissa
- Valheim-Docker-palvelin
Docker ei ole aina paras vaihtoehto kaikille sovelluksille. Yhdessä artikkelissamme esitellään suosituimmat Docker-vaihtoehdot. Lisäksi sivustollamme on useita artikkeleita, joissa verrataan Dockeria muihin alustoihin:
- Kubernetes vs. Docker
- Openshift vs. Docker
- Podman vs. Docker