Docker bemutatóunkban bemutatjuk a Docker virtualizációs platformot, és könnyen követhető utasításokkal megmutatjuk, hogyan használhatja a Docker programot Ubuntu 22.04 rendszerén.

A Docker felépítése és jellemzői

„Bármilyen alkalmazás, bárhol, bármikor” – ez a Docker mottója. A nyílt forráskódú konténerplatform rugalmas, alacsony erőforrásigényű alternatívát kínál a virtuális gépeken (VM) alapuló hardverkomponensek emulálásához.

Míg a hagyományos hardveres virtualizáció több vendégrendszer közös gazdaszerveren történő elindításán alapul, a Docker alkalmazások konténerek segítségével izolált folyamatokként futnak ugyanazon a rendszeren. Ezt konténeralapú virtualizációnak, más néven operációs rendszer szintű virtualizációnak nevezik.

Kép: Virtual machines and software containers in comparison
While each virtual machine launches its own operating system, Docker containers share the core of the host system

A konténeralapú virtualizáció egyik nagy előnye, hogy a különböző követelményekkel rendelkező alkalmazások egymástól elszigetelten futtathatók, anélkül, hogy külön vendégrendszerre lenne szükség. Ezenkívül a konténerekkel az alkalmazások platformokon és különböző infrastruktúrákban is telepíthetők, anélkül, hogy a gazdaszerver hardver- vagy szoftverkonfigurációjához kellene igazodniuk.

A Docker a legnépszerűbb szoftverprojekt, amely konténeralapú virtualizációs technológiát biztosít a felhasználók számára. A nyílt forráskódú platform három alapvető komponensen alapul. A konténerek futtatásához a felhasználóknak csak a Docker motorra és speciális Docker-képekre van szükségük, amelyek a Docker hubon keresztül szerezhetők be vagy saját maguk is létrehozhatók.

Docker-képek

A virtuális gépekhez hasonlóan a Docker konténerek is Docker képeken alapulnak. A kép egy csak olvasható sablon, amely tartalmazza az összes utasítást, amelyre a Docker motornak szüksége van a konténer létrehozásához. A Docker kép egy konténer hordozható képe, amely szöveges fájl formájában, más néven Dockerfile-ként van megadva. Ha egy konténert kell elindítani egy rendszeren, akkor először a megfelelő képpel rendelkező csomagot kell betölteni, amennyiben az még nem létezik helyileg. A betöltött kép biztosítja a szükséges fájlrendszert, beleértve a futási idő összes paraméterét. A konténer egy kép futó folyamataként tekinthető.

A Docker hub

A Docker hub egy felhőalapú nyilvántartás szoftver-tárolók számára, egyfajta könyvtár a Docker-képek számára. Az online szolgáltatás nyilvános és zárt részre oszlik. A nyilvános rész lehetőséget kínál a felhasználóknak, hogy feltöltsék saját fejlesztésű képeiket és megosszák azokat a közösséggel. Itt számos hivatalos kép elérhető a Docker fejlesztői csapattól és bevált nyílt forráskódú projektekből. A nyilvántartás privát részébe feltöltött képek nem érhetők el nyilvánosan, így megoszthatók például egy vállalat belső körében, vagy barátokkal, ismerősökkel. A Docker hub a hub.docker.com oldalon érhető el.

A Docker motor

A Docker projekt középpontjában a Docker motor áll. Ez egy nyílt forráskódú kliens-szerver alkalmazás, amely a jelenlegi verzióban minden felhasználó számára elérhető az összes elterjedt platformon.

A Docker motor alapvető architektúrája három komponensre oszlik: egy szerverfunkciókkal rendelkező démon, a REST (Representational State Transfer) programozási paradigma alapján működő programozási interfész (API) és az operációs rendszer terminálja (parancssori interfész, CLI) mint felhasználói interfész (kliens).

  • Docker démon: A Docker motor szerverként egy démon folyamatot használ. A Docker démon a gazdaszerver háttérében fut, és a Docker motor központi vezérlésére szolgál. Ez a funkció hozza létre és kezeli az összes képet, konténert vagy hálózatot.
  • REST-API: A REST-API egy sor interfészt határoz meg, amelyek lehetővé teszik más programok számára, hogy kommunikáljanak a Docker démonnal és utasításokat adjanak neki. Az egyik ilyen program az operációs rendszer terminálja.
  • Terminál: Kliens programként a Docker az operációs rendszer terminálját használja. Ez a REST-API-n keresztül integrálva a Docker démonnal lehetővé teszi a felhasználók számára, hogy szkriptekkel vagy felhasználói bevitellel vezéreljék azt.
Tipp

2017-ben a Docker motor neve Docker Community Edition-re (rövidítve Docker CE) változott, de a hivatalos dokumentáció és a Docker-tárolók többnyire még mindig a régi nevet használják. A Docker CE mellett létezik még a Docker Enterprise Edition (Docker EE) is, amely néhány prémium funkcióval rendelkezik. Ez azonban nem ingyenes, és inkább vállalatok számára alkalmas.

A Docker parancsokkal a felhasználói szoftverkonténerek közvetlenül a terminálról indíthatók, állíthatók le és kezelhetők. A démon a docker parancs és build, pull vagy run utasítások segítségével érhető el. Az ügyfél és a szerver ugyanazon a rendszeren is lehet. A felhasználóknak lehetőségük van egy másik rendszeren lévő Docker démonhoz is hozzáférni. A létrehozott kapcsolat típusától függően a kliens és a szerver közötti kommunikáció a REST-API-n, UNIX-socketeken vagy hálózati interfészen keresztül történik.

Az alábbi ábra szemlélteti az egyes Docker-összetevők kölcsönhatását docker build, docker pull és docker run példa parancsokkal:

Kép: Schematic representation of the Docker architecture
'The Docker architecture is based on the cooperation of the client (terminal'), szerver (Docker démon) és nyilvántartás (Docker hub).”

A docker build parancs utasítja a Docker démont, hogy hozzon létre egy képet (szaggatott vonal). Ehhez rendelkezésre kell állnia a megfelelő Dockerfile fájlnak. Ha a képet nem kell létrehozni, hanem a Docker hub tárolójából kell betölteni, akkor a docker pull parancsot kell használni (szaggatott vonal). Ha a Docker démon docker run paranccsal kap utasítást egy konténer elindítására, a háttérprogram ellenőrzi, hogy a megfelelő konténerkép helyi szinten elérhető-e. Ha igen, akkor a konténer elindul (folytonos vonal). Ha a démon nem találja a képet, automatikusan elindítja a letöltést a tárolóból.

Munka a Dockerrel

Most itt az ideje megismerkedni a konténerplatform alkalmazásokkal. Ha még nem telepítette a Docker motort, akkor ezt megteheti a Linux terminálon keresztül. Az ehhez szükséges utasításokata „Docker telepítése Ubuntu 22.04-re”című cikkünkben találja. Az alábbiakban megtudhatja, hogyan vezérelheti a Docker motort a terminálról, mit tud Önnek nyújtani a Docker Hub, és miért forradalmasíthatják a Docker konténerek az alkalmazásokkal való munkavégzés módját.

A Docker motor vezérlése

A 16.04-es verziótól kezdve az Ubuntu a systemd (a „system daemon” rövidítése) háttérprogramot használja a folyamatok kezelésére. A systemdegy init folyamat, amelyet más Linux-disztribúciók, például az RHEL, a CentOS vagy a Fedora is használnak. Általábana systemd kapja megaz 1-es folyamatazonosítót. A rendszer első folyamataként a démon felelős az összes következő folyamat elindításáért, figyeléséért és befejezéséért. A korábbi Ubuntu verziókban (14.10 és régebbi) ezt a funkciót azupstart háttérprogram látja el.

A Docker démon a systemd segítségével is vezérelhető. A standard telepítés során a konténerplatform úgy van konfigurálva, hogy a démon automatikusan elinduljon a rendszer indításakor. Ez az alapértelmezett beállítás a systemctl parancssori eszközzel testreszabható.

A systemctl segítségével parancsokat küldhet a systemd- nek egy folyamat vezérlésére vagy állapotának lekérésére. Az ilyen parancs szintaxisa a következő:

systemctl [OPTION] [COMMAND]
bash

Egyes parancsok konkrét erőforrásokra vonatkoznak (például Docker). A systemd terminológiájában ezeket egységeknek nevezik. Ebben az esetben a parancs a megfelelő utasításból és a megcélzott egység nevéből áll.

Ha szeretné aktiválni (engedélyezni) vagy deaktiválni (letiltani) a Docker démon automatikus indítását, használja a systemctl parancssori eszközt a következő parancsokkal:

sudo systemctl enable docker
sudo systemctl disable docker
bash

A systemctl parancssori eszközzel lekérdezheti az egység állapotát:

sudo systemctl status docker
bash

Ha az Ubuntu rendszerén a Docker motor aktív, akkor a terminál kimenete a következő képernyőképen láthatóhoz hasonlóan kell kinéznie:

Kép: The status query via systemctl shows: The Docker engine is active (running)
Status query via systemctl: The Docker Engine is active (running)

Ha a Docker motor jelenleg deaktiválva van, akkor az állapotjelzés inaktív (halott) lesz. Ebben az esetben manuálisan kell elindítania a Docker démont a konténerek futtatásához.

Kép: The status query via systemctl shows: The Docker engine is inactive (dead)
Status query via systemctl: The Docker engine is inactive (dead)

Ha manuálisan szeretné elindítani, leállítani vagy újraindítani a Docker motort, akkor a következő parancsok egyikével szólítsa meg a systemd-t.

A deaktivált démon elindításához használja a systemctl parancsot a start parancs kombinációjával:

sudo systemctl start docker
bash

Ha a Docker démon leállítására van szükség, akkor a stop parancsot használja:

sudo systemctl stop docker
bash

A motor újraindítását a restart parancs kéri:

sudo systemctl restart docker
bash

A Docker hub használata

Ha a Docker motor a konténerplatform szíve, akkor a Docker hub az open source projekt lelke. Itt találkozik a közösség. A felhőalapú nyilvántartásban a felhasználók mindent megtalálnak, amire szükségük van ahhoz, hogy életre keltsék Docker telepítésüket.

Az online szolgáltatás több mint 100 000 ingyenes alkalmazást tartalmazó, sokszínű hivatalos adattárat kínál. A felhasználóknak lehetőségük van képarchívumot létrehozni és azokat munkacsoportokkal közösen használni. A fejlesztőcsapat által nyújtott professzionális támogatás mellett a kezdők itt kapcsolatokat is találhatnak a felhasználói közösséggel. A közösségi támogatás fóruma a GitHubon érhető el.

Kép: The Docker hub: Registration
Create your personal Docker ID for free by registering / Source: hub.docker.com

Regisztráció a Docker hubban

A Docker hubba való regisztráció ingyenes. A felhasználóknak csak egy e-mail címre és a választott Docker ID-re van szükségük. Ez később személyes tároló névterületként szolgál, és hozzáférést biztosít a felhasználóknak az összes Docker szolgáltatáshoz. Jelenleg ez az ajánlat a Docker hub mellett a Docker cloudot, a Docker store-t és kiválasztott béta programokat is magában foglalja. Lehetővé teszi továbbá a Docker ID használatát bejelentkezésként a Docker támogatási központba, valamint a Docker success portálra és a Docker fórumra.

A regisztrációs folyamat öt lépésből áll:

  1. Válassza ki a Docker azonosítóját: Az alkalmazás első lépéseként válasszon egy felhasználónevet, amelyet később személyes Docker azonosítójának fog használni.
  2. Írja be e-mail címét: Írja be jelenlegi e-mail címét. Ne feledje, hogy e-mailben kell megerősítenie regisztrációját a Docker hubon.
  3. Válasszon jelszót: Válasszon egy titkos jelszót.
  4. Küldje el regisztrációját: Kattintson a „Sign up” (Regisztráció) gombra a regisztráció elküldéséhez. Miután az adatok teljes egészében átkerültek, a Docker egy linket küld a megadott e-mail címére, amelyen keresztül ellenőrizheti e-mail címét.
  5. Erősítse meg e-mail címét: Kattintson a megerősítő linkre, hogy megerősítse e-mail címét.

A Docker projekt online szolgáltatásai a böngészőben történő regisztrációt követően azonnal elérhetővé válnak. Itt létrehozhat tárolókat és munkacsoportokat, vagy az „Explore” funkcióval kereshet nyilvános erőforrásokat a Docker hubban.

Kép: Dashboard of the Docker hub
Select and set repositories and workgroups via the Docker hub dashboard / Source: hub.docker.com

A docker login paranccsal közvetlenül az operációs rendszer terminálján is regisztrálhat. A parancs részletes leírása a Docker dokumentációjában található.

Elvileg a Docker hub azok számára is elérhető, akik nem rendelkeznek fiókkal vagy Docker ID-vel. Ebben az esetben azonban csak a nyilvános tárolókból származó képek tölthetők be. Saját képek feltöltése (push) Docker ID nélkül nem lehetséges.

Repozitóriumok létrehozása a Docker hubban

Az ingyenes Docker Hub-fiók egy privát tárolót tartalmaz, és lehetőséget kínál tetszőleges számú nyilvános tároló létrehozására. Ha több privát tárolóra van szüksége, azokat fizetős frissítéssel oldhatja fel.

A tároló létrehozásához kövesse az alábbi lépéseket:

  1. Válasszon egy névteret: Az újonnan létrehozott tárolók automatikusan a Docker ID névteréhez kerülnek hozzárendelésre. Lehetőség van arra is, hogy megadja annak a szervezetnek az azonosítóját, amelyhez tartozik.
  2. Címkézze meg a tárolót: Adjon nevet az újonnan létrehozott tárolónak.
  3. Adjon hozzá leírást: Adjon hozzá egy rövid leírást a tárolóhoz.
  4. Állítsa be a láthatóságot: Döntse el, hogy a tároló nyilvánosan látható legyen (nyilvános), vagy csak Ön vagy a szervezete számára legyen hozzáférhető (magán).

A „Létrehozás” gombra kattintva erősítse meg adatait.

Kép: The Docker hub: Input screen for creating a repository
Your repositories are automatically created in the namespace of your Docker ID / Source: hub.docker.com

Csapatok és szervezetek létrehozása

A hub segítségével a Docker egy felhőalapú platformot biztosít, amelyen a saját készítésű képek központilag kezelhetők és kényelmesen megoszthatók a munkacsoportokkal. A Docker terminológiájában ezeket szervezeteknek nevezik. A felhasználói fiókokhoz hasonlóan a szervezetek is egyedi azonosítókat kapnak, amelyek segítségével képek biztosíthatók és letölthetők. A szervezeten belüli jogok és szerepkörök csapatok segítségével rendelhetők hozzá. Például az „Owners” (Tulajdonosok) csapatba rendelt felhasználók jogosultak privát vagy nyilvános tárolókat létrehozni és hozzáférési jogokat rendelni.

A munkacsoportok közvetlenül a műszerfalon keresztül is létrehozhatók és kezelhetők. További információk a szervezetekről és a csapatokról a Docker dokumentációjában találhatók.

Képekkel és konténerekkel való munka

A hivatalos Docker-források elsődleges kapcsolattartó pontjaként a Docker hub a kiindulási pontunk a képek és konténerek kezelésének bemutatásához. A fejlesztői csapat biztosította a whalesay demo képet, amely alapul szolgál a következő Docker-bemutatóhoz.

Docker-képek letöltése

A whalesay képet a Docker hub weboldalon találja meg, ha a Docker logó melletti keresősávba beírja a whalesay kifejezést.

Kép: The search function in Docker hub
Search the Docker hub using the search bar or the ‘Explore’ button / Source: hub.docker.com

A keresési eredmények között kattintson a docker/whalesay című erőforrásra, hogy megnyissa a kép nyilvános tárolóját.

A Docker-tárolók mindig ugyanazon minta szerint épülnek fel. Az oldal fejlécében a felhasználók megtalálják a kép címét, a tároló kategóriáját és az utolsó feltöltés (utolsó push) időpontját.

Kép: Web view of a Docker repository
In the repository, users generally find all information that is needed to use an image / Source: hub.docker.com

Minden Docker-tárhely a következő információs mezőket is tartalmazza:

  1. Leírás: Részletes leírás, általában a használati utasítást is tartalmazza
  2. Docker pull parancs: A kép letöltésére szolgáló parancssori utasítás a tárolóból (pull)
  3. Tulajdonos: Információk a tároló létrehozójáról
  4. Megjegyzések: Megjegyzés szakasz az oldal végén

A tároló információs mezői azt mutatják, hogy a whalesay a nyílt forráskódú Perl szkript, a cowsay módosítása. A programot Tony Monroe fejlesztette ki 1999-ben, és egy tehén formájú ASCII grafikát generál, amely egy üzenettel együtt jelenik meg a felhasználó terminálján.

A docker/whalesay letöltéséhez használja a docker pull parancsot:

docker pull [OPTIONS] NAME [:TAG|@DIGEST]
bash

A docker pull parancs utasítja a démont, hogy töltsön be egy képet a tárolóból. A kép címének (NAME) megadásával adja meg, hogy melyik képről van szó. Megadhatja a Dockernek, hogy a kívánt parancsot hogyan hajtsa végre (OPTIONS). Az opcionális beviteli adatok között szerepelnek a címkék (:TAG) és az egyedi azonosító számok (@DIGEST), amelyek lehetővé teszik egy kép adott verziójának letöltését.

A docker/whalesay kép helyi másolatát a következő paranccsal lehet beszerezni:

docker pull docker/whalesay
bash

Általában ezt a lépést kihagyhatja. Ha konténert szeretne elindítani, a Docker démon automatikusan letölti a tárolóból azokat a képeket, amelyeket nem talál a helyi rendszeren.

Docker-képek konténerekként való elindítása

A Docker-kép elindításához használja a docker run parancsot:

docker run [OPTIONS] IMAGE [:TAG|@DIGEST] [CMD] [ARG...]
bash

Az docker run parancs egyetlen kötelező része a kívánt Docker-kép neve. De amikor elindít egy konténert, lehetősége van további opciók, TAG-ek és DIGEST-ek megadására is. Ezenkívül az docker run parancs kombinálható más parancsokkal, amelyek a konténer indításakor azonnal végrehajtásra kerülnek. Ebben az esetben a CMD (COMMAND, amelyet a kép létrehozója határoz meg, és amely automatikusan végrehajtásra kerül a konténer indításakor) felülíródik. Egyéb opcionális konfigurációk további argumentumokkal (ARG…) határozhatók meg. Ez lehetővé teszi például felhasználók hozzáadását vagy környezeti változók átvitelét.

Használja a parancssori utasítást

docker run docker/whalesay cowsay boo
bash

hogy letöltsd a meglévő Perl szkriptet kép formátumban, és futtasd egy konténerben. Látni fogod, hogy a whalesay jelentősen eltér a forráskódtól.

Kép: Terminal output of the container docker/whalesay: The whale says ‘boo’
If docker/whalesay is run with the standard command, the Docker whale is limited to a short ‘boo’

Ha a docker/whalesay kép fut, a szkript egy bálna formájú ASCII grafikát és a „boo” szöveges üzenetet ad ki, amelyet a terminálban a cowsay paranccsal adnak át.

A tesztfutáshoz hasonlóan a démon először a helyi fájlkönyvtárban keresi a kívánt képet. Mivel nincs azonos nevű csomag, a Docker-tárházból történő letöltés indul el. Ezután a démon elindítja a módosított cowsay programot. Ha ez végrehajtásra került, a konténer automatikusan leáll.

A cowsay-hez hasonlóan a Docker whalesay funkciója is lehetőséget kínál a program sorrendjébe való beavatkozásra, hogy befolyásolja a terminálon megjelenő szöveget. Tesztelje ezt a funkciót úgy, hogy a kimeneti parancsban a „boo” szót bármilyen karakterlánccal vagy például egy gyenge bálna viccel helyettesíti.

sudo docker run docker/whalesay cowsay What did the shark say to the whale? What are you blubbering about?
bash
Kép: Terminal output of the container docker/whalesay: A whale with an individual message
Make your Docker whale say whatever you want by placing words in his speech bubble

Az összes Docker-kép megjelenítése a helyi rendszeren

Ha nem biztos abban, hogy már letöltött-e egy adott képet, akkor megtekintheti a helyi rendszeren található összes kép áttekintését. Használja a következő parancssori utasítást:

sudo docker image
bash

Az docker images (alternatív docker image ls) parancs kinyomtatja az összes helyi képet, beleértve a fájlméretet, a címkét és a képazonosítót.

Kép: Overview of all images on the local system
The overview displays the images hello-world and docker/whalesay

Ha elindít egy konténert, az alapul szolgáló kép másolatként letöltésre kerül a tárolóból, és véglegesen tárolásra kerül a számítógépén. Ez időt takarít meg, ha később szeretne hozzáférni a képhez. Új letöltés csak akkor indul el, ha a kép forrása megváltozik, például ha a tárolóban elérhetővé válik egy újabb verzió.

Az összes konténer megjelenítése a helyi rendszeren

Ha áttekintést szeretne kapni az összes, a rendszeren futó vagy korábban futott konténerről, használja a docker ps parancssori utasítást az --all opcióval (rövidítve: -a) együtt:

sudo docker ps -a
bash
Kép: Overview of all containers on the local system
The overview shows all containers that have been launched on the Docker engine

A terminál kimenete olyan információkat tartalmaz, mint a megfelelő konténer azonosítója, az alapul szolgáló kép, a konténer indításakor futtatott parancs, a konténer indításának ideje és az állapot.

Ha csak a rendszerén jelenleg futó konténereket szeretné megjeleníteni, használja a docker ps parancssori utasítást más opciók nélkül:

sudo docker ps
bash

Jelenleg azonban nem lehetnek futó konténerek a rendszerén.

Docker-képek létrehozása

Docker bemutatónkban megmutattuk, hogyan lehet képeket keresni a Docker hubban, letölteni őket, és futtatni bármelyik rendszeren, amelyre a Docker motor telepítve van. A Docker segítségével azonban nem csak a regisztrációban elérhető alkalmazások széles skálájához férhet hozzá. A platform számos lehetőséget kínál saját képek létrehozására és más fejlesztőkkel való megosztására is.

A Docker bemutató bevezető fejezeteiben már megtanultad, hogy minden Docker-kép egy Dockerfile fájlon alapul. A Dockerfile fájlokat egyfajta képalkotási sablonnak tekintheted. Ezek egyszerű szöveges fájlok, amelyek tartalmazzák az összes utasítást, amelyre a Dockernek szüksége van egy kép létrehozásához. A következő lépésekben megtanulod, hogyan kell ilyen típusú Dockerfile fájlt írni, és hogyan kell utasítani a Dockert, hogy ezt használja alapul a saját képedhez.

  1. Új könyvtár létrehozása: A Docker fejlesztői csapata azt javasolja, hogy minden Dockerfile fájlhoz hozzon létre egy új könyvtárat. A könyvtárak Linux rendszerben a terminálban könnyen létrehozhatók. A következő parancssori utasítással hozhat létre egy mydockerbuild nevű könyvtárat:
mkdir mydockerbuild
bash
Kép: Ubuntu terminal: The command mkdir
Create new directories with the command mkdir
  1. Navigálás az új könyvtárban: Az cd parancs segítségével navigálhat az újonnan létrehozott munkakönyvtárban.
cd mydockerbuild
bash
Kép: Ubuntu terminal: The command cd
With the help of the cd command, switch to another working directory
  1. Új szövegfájl létrehozása: Az Ubuntu rendszerben a terminálon keresztül is könnyen létrehozhat szövegfájlokat. Ehhez használjon egy Nano vagy Vim szerkesztőt. Hozzon létre egy Dockerfile nevű szövegfájlt a mydockerbuild könyvtárban.
nano Dockerfile
bash
Kép: Ubuntu terminal: Create text files with Nano
The text editor Nano is preinstalled on all Ubuntu versions
  1. Írja meg a Dockerfile fájlt: Az újonnan létrehozott szövegfájl az Ön által fejlesztett kép építési tervének szolgál. A kép teljes újraprogramozása helyett ebben a Docker bemutatóban a docker/whalesay demo képet használjuk sablonként. Ezt a Dockerfile fájlban a FROM paranccsal integráljuk. A :latest címkével hivatkozhat a kép legújabb verziójára.
FROM docker/whalesay:latest

Eddig a docker/whalesay úgy működött, hogy Ön szavakat adott a szájába. A terminálban a beírt szöveg pontosan úgy jelenik meg, ahogyan beírta, a konténer elindítására szolgáló paranccsal együtt. De érdekesebb lenne, ha a szkript automatikusan generálna új szöveges kimenetet. Ez például a minden Linux-rendszeren elérhető fortunes programmal valósítható meg. A fortunes alapvető funkciója, hogy szerencsesüti-mondásokat és humoros aforizmákat generál. A következő paranccsal frissítheti a jelenlegi helyi csomagindexet és telepítheti a fortunes programot:

RUN apt-get -y update && apt-get install -y fortunes

Ezután határozzon meg egy CMD utasítást. Ez a RUN parancs után kerül végrehajtásra, hacsak nem írja felül a call (docker run image CMD) parancs. A következő paranccsal futtathatja a fortunes programot a -a opcióval („Válasszon az összes adatbázisból”), és a kimenetet a cowsay programmal jelenítheti meg a terminálon:

CMD /usr/games/fortune -a | cowsay

A Dockerfile fájlnak a következőnek kell lennie:

FROM docker/whalesay:latest
RUN apt-get -y update && apt-get install -y fortunes
CMD /usr/games/fortune -a | cowsay

Megjegyzés: A Dockerfile fájlban található parancsok mindig egysorosak és mindig kulcsszóval kezdődnek. Az alapul szolgáló szintaxis nem különbözteti meg a kis- és nagybetűket, így nem számít, hogy kis- vagy nagybetűvel írja-e őket. A kulcsszavak nagybetűs írásmódja azonban egységes.

Kép: The text editor Nano in the Ubuntu terminal
Control the text editor Nano via the key combinations given in the footer
  1. Szövegfájl mentése: Mentse el a bejegyzést. Ha Nano szerkesztőt használ, mentse el a [CTRL] + [O] billentyűkombinációval, és erősítse meg az [ENTER] billentyűvel. A Nano üzenetet jelenít meg, hogy három sor került a kiválasztott fájlba. Zárja be a szövegszerkesztőt a [CTRL] + [X] billentyűkombinációval.
  2. Kép létrehozása Dockerfile-ként: Ha képet szeretne létrehozni egy Dockerfile-ból, először keresse meg azt a könyvtárat, amelyben a szövegfájl található. Indítsa el a kép létrehozását a docker build parancssori utasítással. Ha a képet egyedi névvel szeretné ellátni vagy címkével ellátni, használja a -t opciót, majd adja meg a kívánt címke és tag kombinációt. A standard formátum a name:tag.

A jelenlegi példában egy docker-whale nevű képet kell létrehozni:

docker build -t docker-whale .
bash

Az utolsó pont jelzi, hogy az alapul szolgáló Dockerfile a kiválasztott könyvtárban található. Lehetőség van a forrásfájlok fájlútvonalának vagy URL-jének megadására is.

A build folyamat akkor kezdődik, amikor a parancsot az [ENTER] billentyűvel megerősítik. Először a Docker démon ellenőrzi, hogy rendelkezik-e az image létrehozásához szükséges összes fájllal. A Docker terminológiában ezt a „kontextus” kifejezéssel foglalják össze.

Ezután a docker/whalesay kép a :latest címkével található:

Ha a kép létrehozásához szükséges kontextus már teljes egészében létezik, akkor a Docker démon elindítja a FROM paranccsal csatolt kép sablont egy ideiglenes konténerben, és továbblép a Dockerfile következő parancsára. A jelenlegi példában ez a RUN parancs, amely a fortunes program telepítését eredményezi.

A képalkotási folyamat minden egyes lépésének végén a Docker egy azonosítót ad a lépésben létrehozott megfelelő réteghez. Ez azt jelenti, hogy az alapul szolgáló Dockerfile minden egyes sora megfelel a rajta épített kép egy rétegének.

A RUN parancs végrehajtása után a Docker démon leállítja az ehhez létrehozott konténert, eltávolítja azt, és elindít egy új ideiglenes konténert a CMD utasítás rétegéhez. A létrehozási folyamat végén ez az ideiglenes konténer is leáll és eltávolításra kerül. A Docker megadja az új kép azonosítóját:

Successfully built a8f2048c9ab8
Kép: Ubuntu terminal: Status message during image creation
Docker images are created in multiple layers

Az újonnan létrehozott kép a docker-whale név alatt található a helyileg mentett képek áttekintésében.

sudo docker images
bash
Kép: Ubuntu terminal: Overview of all images
The newly created image in the image overview

Az újonnan létrehozott képből konténert indítani a parancssori utasítás sudo docker run használatával lehet, a kép nevével kombinálva:

sudo docker run docker-whale
bash

Ha a kép a Dockerfile fájlból helyesen lett létrehozva, akkor a bálna most többé-kevésbé bölcs szavakkal fog inspirálni téged. Megjegyzés: Minden alkalommal, amikor újraindítod a konténert, egy új mondat generálódik.

Kép: Container based on docker-whale: Text output in the terminal
Thanks to fortunes, the ASCII whale now provides witty or wise phrases

Címkézze meg a Docker-képeket, és töltse fel őket a Docker Hubra.

Ha saját docker-whale képét szeretné feltölteni a hubra, és azt a közösség vagy egy munkacsoport számára elérhetővé tenni, először össze kell kapcsolnia azt a saját személyes névterében található, azonos nevű adattárral. A Docker terminológiában ez a lépés tagelés néven ismert.

Kép közzétételéhez a Docker hubban kövesse az alábbi lépéseket:

  1. Hozzon létre egy tárolót: Jelentkezzen be a Docker hubba a Docker azonosítójával és személyes jelszavával, majd hozzon létre egy nyilvános tárolót docker-whale néven.
Kép: The Docker hub: Entry form for creating a repository
Create a repository for your custom image / Source: hub.docker.com
  1. Határozza meg a kép azonosítóját: Határozza meg az egyéni kép docker-whale azonosítóját a parancssori utasítás docker images segítségével.
Kép: Overview of all local images in the Ubuntu terminal
The command docker images lists all images that are saved on your system

Esetünkben a kép azonosítója a8f2048c9ab8. Erre a következő lépésben a címkézéshez lesz szükségünk.

  1. Címkézze meg a képet: Címkézze meg a docker-whale képet a parancssori program docker tag segítségével az alábbiak szerint:
sudo docker tag [Image-ID][Docker-ID]/[Image-Name]:[TAG]
bash

A jelenlegi példában a címkézés parancssori utasítása a következő:

sudo docker tag a8f2048c9ab8 [Namespace]/docker-whale:latest
bash

A docker images áttekintés segítségével ellenőrizheti, hogy helyesen címkézte-e a képet. A tároló neve most már tartalmaznia kell a Docker azonosítóját.

Kép: Ubuntu terminal: Image overview before and after tagging
Link images with your Docker ID using the command docker tag
  1. Kép feltöltése: A kép feltöltéséhez először be kell jelentkeznie a Docker hubba. Ezt a docker login parancs segítségével teheti meg.
sudo docker login
bash

A terminál ezután kéri, hogy adja meg felhasználónevét (Docker ID) és jelszavát.

Kép: Log in to the Docker hub via the Ubuntu terminal
Before you can upload an image to the Docker hub, you first need to log in

Ha a bejelentkezés sikeres volt, akkor a docker push parancssori utasítással töltse fel a képet az újonnan létrehozott adattárba.

sudo docker push [Namespace]/docker-whale
bash

A feltöltési folyamat csak néhány másodpercet vesz igénybe. Az aktuális állapot a terminálon látható.

Kép: Ubuntu terminal: Status message of the image upload
After uploading, the image is available under the set tag latest in the Docker hub

Jelentkezzen be a Docker hubba a böngészőn keresztül, hogy megtekintse a feltöltött képet.

Kép: Docker hub: The repository [Namespace]/docker-whale in the detailed view
The latest update of your repository is shown in the detailed view / Source: hub.docker.com

Ha több képet szeretne feltölteni egy adattárba, használjon különböző címkéket, hogy képeit különböző változatokban kínálja. Például:

[Namespace]/docker-whale:latest
[Namespace]/docker-whale:version1
[Namespace]/docker-whale:version2

A különböző képverziók áttekintése a Docker hub adattárban található, a „Tags” (Címkék) fül alatt.

Kép: Docker hub: The ‘Tags’ tab
In the ‘Tags’ tab, you’ll find all versions of an image / Source: hub.docker.com

A különböző projektek képeit azonban külön tárolókban kell tárolni.

Ha a feltöltés sikeres volt, az egyéni kép mostantól a nyilvános adattárban elérhető lesz minden Docker-felhasználó számára világszerte.

  1. Tesztfutás: Tesztelje a feltöltés sikerességét azáltal, hogy megpróbálja letölteni a képet.

Ne feledje, hogy a kép helyi verzióját először törölni kell, hogy letölthető legyen egy új példány ugyanazzal a címkével. Ellenkező esetben a Docker jelenti, hogy a kívánt kép már létezik a jelenlegi verzióban.

Kép: The Image is up to date
If an image exists locally, the pull command is cancelled

A helyi Docker-kép törléséhez használja a parancssori utasítást docker rmi a megfelelő képazonosítóval együtt. Ez a szokásos módon docker images segítségével határozható meg. Ha a Docker ütközést jelent, például mert egy képazonosító több tárolóban vagy egy konténerben is használatos, ismételje meg a parancsot a --force opcióval (rövidítve:-f ) a törlés kényszerítéséhez.

sudo docker rmi -f a8f2048c9ab8
bash
Kép: Command docker rmi in combination with the option -f (force)
Use the command docker rmi in combination with the option -f to force a deletion

Az összes helyi kép áttekintésének újbóli megjelenítése:

sudo docker Images
bash

A törölt elemeknek már nem kell megjelenniük a terminál kimenetében. Most használja a tárolóban megadott pull parancsot, hogy letöltse a kép új másolatát a Docker hubról.

sudo docker pull [Namespace]/docker-whale
bash
Kép: Ubuntu terminal: Download from the Docker hub
The previously published image is successfully downloaded

További Docker témák és oktatóanyagok

A Docker univerzum hatalmas, és az idők folyamán a Docker eszközökből egy élő ökoszisztéma alakult ki. A Docker különösen hasznos a rendszergazdák számára, főleg ha komplex alkalmazásokat működtetnek, több konténerrel párhuzamosan, különböző rendszereken. A Docker sokféle funkciót kínál az ilyen klaszterek összehangolásához. Erről bővebben a Swarm és Compose segítségével történő Docker-összehangolásról szóló cikkünkben olvashat.

A Digitális útmutató további oktatóanyagokat tartalmaz a Docker használatához:

  • Docker-tárhely beállítása
  • Docker konténer kötetek
  • Docker: Biztonsági mentés és visszaállítás
  • Docker telepítése és futtatása Linux szerveren
  • Docker Compose bemutató

A Docker számos alkalmazási helyzetben használható. A digitális útmutatóban a következő oktatóanyagokat találja:

  • WordPress telepítése Docker konténerekben
  • VPN futtatása Docker konténerben a SoftEther segítségével
  • Nextcloud telepítése Dockerrel
  • Portainer telepítése Docker alatt
  • Redis Docker konténerekben
  • Valheim Docker szerver

A Docker nem mindig a legjobb választás minden alkalmazáshoz. Az egyik cikkünk a legnépszerűbb Docker-alternatívákat mutatja be. Ezenkívül számos cikkünkben összehasonlítjuk a Dockert más platformokkal:

  • Kubernetes kontra Docker
  • Openshift kontra Docker
  • Podman kontra Docker
Ugrás a főmenübe