Gyors bevezetés a Docker címkékbe

Ha még egy ideig dolgoztál Dockerrel, lefogadom, hogy találkoztál címkékkel. Gyakran úgy néznek ki, mint „my_image_name: 1”, ahol a kettőspont utáni részt tagként ismerjük. A címkéket nem mindig adják meg a képek címkézésekor, de ennek későbbre térünk ki.

Amióta elkezdtem használni a Dockert, nagyon megzavarodtam a címkékben. A dokumentáció nem nagyon magyarázza őket, és valóban nincsenek alapos magyarázatok a témához. Ezért döntöttem úgy, hogy megírom ezt a bejegyzést.

Mik azok a Docker-címkék?

Szóval, mi is pontosan a Docker címke? Egyszerű szavakkal, a Docker-címkék hasznos információkat közvetítenek egy adott képverzióról / -változatról. Ezek az álnevek az azonosító a kép, amely gyakran így néz ki: f1477ec11d12. Ez csak a képre való hivatkozás módja. Jó hasonlat az, hogy a Git-címkék miként utalnak a történelem egy bizonyos elkötelezettségére.

A címkék két leggyakoribb esete a következő:

  1. Kép készítésekor a következő parancsot használjuk:
docker build -t username/image_name:tag_name .

Próbáljuk meg kicsomagolni, mit csinál ez a parancs egy kicsit. Azt mondjuk a Docker démonnak, hogy töltse le az aktuális könyvtárban található Docker fájlt (ezt .teszi a végén a vége). Ezután azt mondjuk a Docker démonnak, hogy készítse el a képet, és adja meg a megadott címkét. Ha fut docker images, akkor látnia kell egy képet, amelynek tárháza username/image_nameés címkéje van tag_name.

username/image_name nem kötelező formátum a kép nevének megadásához. Ez csak egy hasznos konvenció, amely elkerüli a kép újbóli címkézését, amikor be kell állítania a rendszerleíró adatbázisba.

A képed bármit megnevezhetsz, amit csak akarsz. A nyilvános Docker-nyilvántartás esetében a képek elnevezése során kétszintű hierarchiára van korlátozva. Például a képének nem lehet neve. a/b/c:1.Ez a korlátozás általában nem létezik a privát nyilvántartásokban. Mint korábban említettük, nem kötelező megadnia a következőket tag_name.: Hamarosan meglátjuk, mi történik ebben az esetben.

2. Egy kép kifejezett megcímkézése a tagparanccsal.

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

Ez a parancs csak egy álnevet (referenciát) hoz létre annak a névnek a nevével, TARGET_IMAGE amely az SOURCE_IMAGE.Ennyit tesz. Ez olyan, mintha egy meglévő képhez más nevet rendelnénk, hogy hivatkozzunk rá. Figyelje meg, hogy a címke itt is meg van határozva opcionálisként [:TAG].

Mi történik, ha nem ad meg címkét?

Rendben, most derítsük ki, mi történik, ha egy kép címkézése közben nem ad meg címkét. Itt latestjön a képbe a címke. Amikor egy képet explicit címke nélkül latest címkéznek meg, alapértelmezés szerint a címkét kapják . Ez egy szerencsétlen névválasztás, amely sok zavart okoz. De szeretném úgy gondolni, mint az alapértelmezett címkét , amelyet a képek kapnak, ha nem ad meg ilyet.

Sok zavart latestokoz a várakozás, hogy ez a kép legújabb verziója, különösen a Dockerfiles-ban. Vizsgáljuk meg a különböző forgatókönyveket egy példával:

1. forgatókönyv:

Tegyük fel, hogy a következő állítás szerepel a Dockerfile-ban:

FROM debian

Mivel nem adtunk meg címkét, a Docker hozzáadja a latestcímkét, és megpróbálja meghúzni a képet debian:latest.

2. forgatókönyv:

FROM debian:9.3

Mivel a címkét itt kifejezetten megemlítjük, a Docker a 9.3 címkével ellátott Debian képet húzza

Egy másik dolog, amit szem előtt kell tartani, hogy nincs olyan szabály, amely kimondja, hogy a képnek csak egy címkével kell rendelkeznie. Egy képnek több címkéje lehet, és általában nagyobb és kisebb verziók megadására használják őket. Fontolja meg például ezt:

A bejegyzés megírásakor latesta Debian kép címkéje a 9.3kiadásra és a 9kiadásra mutat. Ez a jövőben nagy valószínűséggel változni fog, ha a nagyobb vagy a kisebb verzió a képhez kerül.

Felhívjuk figyelmét, hogy a szemantikus verziókhoz használt címkéket szokás követni, de a címkéket nem csak erre a célra tervezték .

Összefoglalva, a legújabb nem egy különleges címke

A legfontosabb elvonás az eddigiekből az, hogy a legújabb olyan, mint bármely más címke . A fejlesztő feladata a képek megfelelő címkézése, amely latestmindig a kép legújabb stabil kiadására mutat.

Ennélfogva a képek húzásakor nem határozunk meg kifejezetten címkét a Docker-fájljainkban, mivel az alapkép teljesen más verziójával rendelkezhetünk, mint amit korábban használtunk. Nincs garancia arra, hogy ez nagyobb vagy kisebb ütés lesz. Még egy régi kiadás is megcímkézhető latest.

PS Ha tévhiteket / hibákat talált a bejegyzésben, nyugodtan tweeteljen nekem @ScribbingOn.

Köszönet Jérôme Petazzoninak, hogy segített nekem megérteni ezeket.