Amikor a Dockerrel elkezdünk ismerkedni legelőször a terminálból futtatható docker paranccsal ismerkedünk meg. Telepítsük a Dockert és kezdjük mi is ezzel az ismerkedést.

Elsőként ellenőrizzük, hogy megfelelően fut-e a Docker és zárjuk ki a főbb hibákat. Listázzuk ki a futó konténereket a következő paranccsal:

docker ps

Eredményül egy üres táblázatot kell kapnunk:

PS parancs kimenete egy üres lista

Addig ne is menj tovább, amíg ez nem működik. A leggyakoribb hiba, hogy nem indítottuk el a Rancher vagy Docker Desktop-ot. Amennyiben ennél bonyolultabb lenne a probléma keress meg nyugodtan, max fél óra alatt online elhárítjuk közösen a hibát.

Miért listázzuk a futó konténereket, amikor most települt a Dockert és biztos nincsenek futó konténerek? Azért ezzel kezdünk, mert a a Docker is, mint annyi más eszköz a DevOps szcénában két részből áll. Egyrészt van egy parancssori eszköz, valamint van egy a háttérben futó szolgáltatás/daemon/szerver. A docker lesz a parancssori eszköz és a containerd a háttérben futó daemon. Ez utóbbi hozza létre, indítja el és felügyeli a konténereket és még számtalan egyéb dolgot hajt végre. A docker parancs semmi mást nem csinál, mint a felhasználó utasításait elküldi ennek a daemonnak és a válaszait megjeleníti. Amennyiben a kettejük között a kapcsolat nem megfelelő, nem fogjuk tudni semmire se használni a docker parancsot, hiába fut tökéletesen a gépen.

Na, akkor futtassuk is le életünk második docker parancsát és egyben futtassuk is az első konténerünket.

docker run hello-world

Ez a parancs - mint ahogyan ki is írja - a következő lépéseket hajtja végre:

  1. A Docker kliens kapcsolódik a Docker daemonhoz.
  2. A Docker daemon letölti a “hello-world” image-et a Docker Hub-ról.
  3. A Docker daemon elkészíti egy konténert az előbb letöltött image alapján, majd futtatja azt a parancsot, ami előállítja azt a kimenetet, amit éppen olvasol.
  4. A Docker daemon elküldi ezt a kimenetet a Docker kliensnek, ami megjeleníti azt a terminálban.

Mint látható maga a Docker parancssori kliens nem sok mindent csinál, a munka dandárját a daemon végzi.

Amennyiben csak úgy magában futtatjuk a docker kliens, úgy meg fogja jeleníteni az utasításokat, amiket használhatunk. Az utasításoknak két nagy csoportja van. A sima utasítások (Commands) és a menedzselő/kezelő utasítások (Management Commands). Ez a kettősség történeti okokra vezethető vissza. Kezdetben csak a sima utasítások léteztek, de ahogy telt-múlt az idő egyre több és több funkcióval gazdagodott a rendszer és ezért egyre átláthatatlanabb lett. Az rm paranccsal lehetett konténert törölni, az rmi paranccsal pedig imaget. A ps a konténereket listázta, az images az imageket. Aztán ott voltak a volume-ok és network-ok, amiket már menedzser parancsokkal lehetett listázni és törölni. Ami azt jelenti, hogy ezekhez nem a docker, hanem a docker volume vagy docker network kezdetű parancsot kellett használni. Listázni mindegyiket az ls, törölni az rm utasítással lehet.

Felmerült az igény az egységesítésre és ezért megjelentek a docker container és docker image utasítások is, de a visszafelé kompatibilitás miatt megőriztek pár sima utasítást is. Ezért van az, hogy a konténereket a docker ps és a docker container ls paranccsal is ki lehet listázni és az imageket a docker rmi és docker image rm parancsokkal is le lehet törölni.

Az image és a konténer közötti különbségről lesz majd még szó egyelőre elég annyi, hogy az image az egy sablon vagy minta ami alapján elkészül a futó konténer. Az image-ben tudjuk leírni, hogy milyen fájlrendszert érjen el a konténer és milyen alapbeállításokkal induljon el.

A következő pár részben a konténerek futtatásával fogunk foglalkozni, de aztán rá fogunk térni az image készítésére is.

Addig is ne feledd! Amennyiben szeretnél fejlődni keress meg nyugodtan. Csoportos és személyes Docker oktatással és tanácsadással tudlak téged vagy csapatodat, cégedet támogatni.

A Docker gyorstalpaló cikksorozat részei

  1. Bevezetés - Docker gyorstalpaló
  2. Telepítés - Docker gyorstalpaló
  3. CLI avagy a parancssori értelmező - Docker gyorstalpaló
  4. Konténer futtatása - Docker gyorstalpaló
  5. Compose - Docker gyorstalpaló
  6. Stack futtatása - Docker gyorstalpaló
  7. Image készítése, Dockerfile - Docker gyorstalpaló

Borító OpenClipart-Vectors képe a Pixabay-en.