Publikálás a DockerHubban¶
Egy fejlesztés során több módon is közzé tehetjük az elkészült munkát. A GitHub feltehetően egy már természetes és az olvasó számára ismert módja ennek, de maga a DockerHub is lehetővé teszi kész konténer image-ek tárolását, mely saját konténereink terjesztésének az egyik legegyszerűbb módját kínálja. Ebben a fejezetben megismerjük:
A DockerHub regisztrációjának folyamatát.
Egy kontner feltöltésének menetét.
A feltöltött konténer helyességének ellenőrzését.
A konténer hozzáférésének szabályozását, illetve a DockerHubban tárolt konténerek kezelését és törlését.
Szükséges eszközök: |
Windows, MacOS vagy Linux operációs rendszerű számítógép, telepített Docker szoftverrel. |
Feldolgozási idő: |
kb. 1 óra, a gyakorlati feladatok megoldására további 1 óra. |
Bár a konténer feltöltése a DockerHubba nem túl bonyolult folyamat, az több lépésből áll. Korábban bármit szabadon letölthettünk innen, de a feltöltést már nem végezhetjük anonymous felhasználóként, ahhoz regisztráció szükséges. Amennyiben még nem rendelkezel DockerHub bejelentkezési profillal, készíts egy ilyet a https://hub.docker.com/signup oldalon. A bejelentkezési nevet érdemes gondosan megválasztani, mert azt a későbbiekben azt namespace-ként kell használni, így érdemes „szalonképes”, akár egy későbbi álláspályázatban is vállalható, még szabad nevet keresni.
A bejelentkezést követően lehet létrehozni az egyes konténerek tárolására szolgáló repository-kat. Minden ilyen namespace-ként, tehát a bejelentkezési név alatt jelenik majd meg pl. így: koczkaferenc/teszt. Egy repository lehet privát és nyilvános is, ezt az image céljának és adattartalmának megfelelően érdemes megválasztani. Értelemszerűen a privát repók csak az arra jogosultak, míg a publikusak bárki számára letölthetők a hubról. Az eddigiekben szereplő konténer image-ek mindegyike publikus volt.
Az első példánk legyen egy nagyon egyszerű, egy Pythonban megírt „Hello world!”, amit először elkészítünk, majd kialakítjuk a DockerHubon a tárolására szolgáló repository-t, ezt követően az elkészített konténer image-et feltöltjük, az eredményt pedig végül úgy teszteljük, hogy azt egy másik gépen a docker run paranccsal elindítjuk.
A dockerfile-ban a python:3-ból indulunk ki, majd egy egyszerű echo paranccsal készítjük el az egysoros Python forrást, amit a /hello.py fájlba helyezünk el. (OK, ez finoman szólva sem szokványos módja a forrásprogram elkészítésének, de játsszunk!) Végül meghatározzuk a konténer indító parancsát, ami a python /hello.py lesz.
FROM python:3
RUN echo "print ('Hello World!')" >/hello.py
CMD ["python3", "/hello.py"]
Építsük fel el a konténer image-t a docker build -t hello:1 . paranccsal, majd ellenőrizzük a működését a docker run hello:1 begépelésével!
kf@imac:~/docker$: docker run hello:1
Hello
Ha mindent rendben találtunk, el lehet kezdeni az image feltöltését a DockerHubba. Ennek első lépése a DockerHubon egy új repository létrehozása, amelynek neve példánkban koczkaferenc/teszt lesz (a namespace-t értelemszerűen helyettesítsd a saját login neveddel).
Egy új repository létrehozása a DockerHubban¶
Következő lépésben meg kell határozni, hogy a felépített docker image-t melyik repository-ba szeretnéd feltölteni, amihez egy újabb docker parancsot kell használni. Ennek paramétere nálam értelemszerűen a koczkaferenc/teszt volt, de a namespace-t itt is értelemszerűen cserélni kell a sajátodra. Az összerendelést a docker tag paranccsal kell elvégezni az alábbi módon:
kf@imac:~/docker$: docker tag hello:1 koczkaferenc/hello:1
Ezzel a korábban elkészített image-et összekapcsoltuk a DockerHub megfelelő repository-jának nevével, így a feltöltést követően a hubban levő konténer ezzel lesz majd hivatkozható. Már csak el kell végezni magát a feltöltést, amihez viszont előbb be kell jelentkezni:
kf@imac:~/docker$: docker login
Username: <docker_login_name>
Password: <docker_password>
Login Succeeded
Töltsük fel az image-et, majd ellenőrizzük, hogy mi változott a DockerHub webes felületén.
docker push koczkaferenc/hello:1
Repository létrehozása a DockerHubon¶
Látható, hogy az 1-es verzió bekerült az elérhető változatok közé. Végül másik gépen ellenőrzést végezünk, hogy valóban letölthető és működtethető-e:
kf@macbook:~$: docker run koczkaferenc/hello:latest
Amennyiben minden rendben történik, a Docker letölti a konténert, elindítja azt, és fáradozásunk gyümölcseként a konzolon megjelenik a „Hello World!” szöveg.
Szakdolgozat
Ha a szakdolgozatod valamilyen konténerizálható alkalmazás, érdemes lehet a DockerHubon is publikálnod, így az bárki számára letölthetővé és elérhetővé tehető. Mivel a konténer tartalmaz minden, a működéséhez szükséges szoftvert, amelyeket már megfelelően be is állítottál, a futtatást bármilyen, docker-képes gépen könnyedén, egy paranccsal el lehet végezni.
Összefoglalás¶
Ebben a rövid fejezeteben a konténer image-ek DockerHubba történő publikálását ismertük meg. A folyamat első lépéseként egy hozzáférést készítettünk a DockerHubon, majd elkészítettük a konténer image-et. A taggelést és a bejelentkezést követően feltöltöttük a konténer image-et, végül pedig egy másik gépen ellenőriztük annak működőképességét.
Feladatok¶
Készíts egy saját DockerHub hozzáférést!
Jelentkezz be a DockerHubba, majd hozz létre
Demonéven egy repository-t a saját névteredben!Az előző fejezetben létrehozott Php web projektet lásd el egy megfelelő taggel!
Töltsd fel ezt az image-et a DockerHubba!
Ellenőrizd a DockerHub webes felületén a feltöltés sikerességét és tekintsd át, milyen további információk érhetők el arról!
Lehetőség szerint egy másik (akár virtuális) gépen hozd létre a konténered egy példányát úgy, hogy a DockerHubot használod annak forrásaként!
Fejleszd tovább az eredeti web tartalmát a konténerben, készítsd el a második verzió image-ét, taggeld a megfelelő verzióval, majd ezt is töltsd fel a DockerHubba!
Ellenőrizd ennek a verziónak a letölthetőségét, és teszteld, hogy ebben már valóban az újabb tartalom érhető el.
Állítsd le az összes, ehhez a projekthez tartozó konténert, töröld őket, valamint a létrehozásukhoz szükséges konténer image-eket is!
Töröld a projekt repository-t a DockerHubból is!
Készíts az előző fejezetben létrehozott web-1.pelda.hu és web-2.pelda.hu image-ek számára egy-egy repository-t a DockerHubon, és töltsd fel őket oda!
Ellenőrizd, hogy ezek elérhetők és működőképesek-e, és őrizd is meg őket, mert a A HAProxy fejezet feladatának megoldásához még mindig szükség lesz rájuk!