Docker Hub letöltési korlát hatása a cégekre, ingyenes szolgáltatásokra

stop ábra a pixabay.com-ról

A 2020-as év sok területen hozott változást és úgy tűnik, a Docker sem maradt kivétel. Azon túl, hogy természetesen tovább fejlődött, néhány új szabály bevezetése miatt át kell kell gondolni a korábbi használati szokásokat. Az egyik nagy előny ugyanis az volt eddig, hogy bármilyen gépen is dolgoztam, ha volt internet hozzáférésem, le tudtam tölteni a szükséges Docker image-eket, fel tudtam telepíteni több gépre is egymás után a Docker Hub-ról letöltött programokat, törölni tudtam és újra el tudtam készíteni egy virtuális gépet, hogy egymás után többször is leteszteljek egy telepítést az alaprendszerből kiindulva. Ez viszont megváltozott, amit lehet kezelni, és sokaknak fel sem fog tűnni a változás, de lesznek sokan, illetve valószínűleg már vannak sokan, akiknek feltűnt és kénytelenek voltak változtatni a módszereiken.

2020 November óta a Docker Hub bevezette a Download Rate Limit-et, ami azt jelenti, hogy mindenkire vonatkozik egy limit, 6 órán belül hány Docker image-et tölthet le a Docker Hub-ról. Persze, mivel nem csak bejelentkezve lehet letölteni, ezért több limit is létezik. A bejelentkezés nélkül letöltők számára 100 letöltés engedélyezett 6 óra leforgása alatt, míg a bejelentkezett felhasználók 200 image-et tölthetnek le ebben az időintervallumban.

Ez azt jelenti, hogy ha nagyon sokat tesztelsz, gyakorolsz, és több image-et töltesz le és törölsz egymás után, vagy több különböző gépen, bár nem könnyű, de meg lehet haladni a 200-as letöltési limitet is. Erre is van megoldás, mert viszonylag olcsón, havi 5 dollárért, azaz jelenleg kevesebb, mint 1500 forintért lehet venni személyre szóló Pro előfizetést, ami több más előny mellet korlátlan letöltést biztosít.

ismeretlen emberek ábra a pixabay.com-ról

De mi a helyzet az anonim felhasználókkal? Hogy pontosan mi az, ami alapján beazonosítják a belépés nélkül letöltőket, nem tudom, de valószínűleg IP cím alapján. Ez azzal jár, hogy ha nincs saját IP címed egy helyi hálózatban, bárki, aki abban a hálózatban letölt, a te anonim limitedet is használja. Ha például egy cég aktívan használ Dockert, az alkalmazottak munkaállomásain és a szervereken levő letöltések száma összeadódik, amennyiben senki sem jelentkezik be. Ha pedig bejelentkezik, akkor a saját személyes limitjét használja a céges feladatokhoz. Ez főként egy szoftverfejlesztő cégnél probléma, ahol simán megtörténhet, hogy a sok fejlesztő alkalmazott a saját gépein is dolgozik, ami mellett virtuális gépeket is indít, és még többféle céges szerveren is le kell töltenie image-eket. Ráadásul ha még egy CI szerver is fut valahol, ami folyamatosan futtat teszteket, nem is olyan lehetetlen az autentikáció nélküli limitet meghaladni. Az alkalmazottak pedig valószínűleg nem szeretnék a személyes limitjüket beáldozni, ha saját célra is használják a Dockert és nincs előfizetésük.

business ábra a pixabay.com-ról

Felmerül a kérdés tehát, hogy akkor mi a megoldás. Egy részt van céges előfizetés is, ami viszont 5 felhasználón túl már havi 5 helyett 7 dollárba kerül. Ez cégtől függ, hogy tudja-e, akarja-e fizetni, hány embernek kellene előfizetést biztosítani. Más részt viszont egy saját Docker registry telepítése is könnyen megoldható. Akár autentikációval és grafikus kezelőfelülettel együtt is, amire többek között az egyik megoldás a Portus, amit már 3 évvel ezelőtt is javasoltam más eszközökkel együtt. A céges registry-be pedig egy céges felhasználóval át lehet tölteni a szükséges image-eket, így nem kell mindenkinek feltétlenül előfizetés. A fejlesztők, üzemeltetők pedig ebből a registry-ből töltik le korlátlanul az image-eiket. Így azt is kordában lehet akár tartani, hogy miket szabad a cégnél használni. A friss verziók letöltéséről viszont gondoskodni kell.

Nyilván, ha valami új image-re van szükség, a probléma továbbra is adott. Ki tölti le először, hogy kipróbálja? Lehet-e és hogyan lehet kérni annak áttöltését a céges szerverre és van-e értelme a tárhelyet fogyasztani csak hogy kipróbáljuk. Ezek viszont már nem olyan problémák, amit ne tudna a cég kitalálni. Ráadásul az anonim limit továbbra is adott és talán belefér néhány letöltés. Ha mégsem, akkor még mindig lehet kérni a letöltést a céges tárolóba, ami talán nem fog naponta megtörténni. De az is lehet, hogy valamilyen közvetett módon a céges közös felhasználóval céges hálózatból kap lehetőséget a letöltésre, akinek szükséges. Ezen a ponton mondjuk megkérdőjelezhető, hogy mit enged meg az előfizetés-

üzletember ábra a pixabay.com-ról

Jó, a céget már megoldottuk, de mi a helyzet a személyes felhasználással? Az olyan szolgáltatásokkal, mint Travic CI vagy a Play With Docker. Én sokáig figyelmen kívül hagytam a limitet, mondván képtelenség, hogy jelenleg személyes felhasználásra meghaladjam, de tévedtem. A Travis CI, ami lehetőséget ad ingyenesen is saját image-ek készítésére és feltöltésére, egy sokfelhasználós szolgáltatás és bizony nagyon gyorsan elfogy az az anonim limit. Lehet, hogy egyszer lesz erre valami extra engedmény, de mivel van lehetőség autentikációra is a Travisen keresztül, jó esély van rá, hogy nem lesz. A build folyamatban nincs szükség feltétlenül bejelentkezésre, így eddig megtehetted, hogy a folyamat gyorsítása érdekében csak egy későbbi lépésnél léptetted be a felhasználód, vagy ha csak a tesztek futtatására használtad feltöltés nélkül, akkor nem is volt rá szükség. Most viszont már muszáj loginolni, különben a buildek nagy része nem fog sikerülni.

A Play With Docker egy másik történet, mert bár azt is sokat használják, nincs limit. Ez végül is érthető is, hiszen saját magával nem szúr ki a Docker team, hogy az ismerkedési folyamatban már megkövetelje a bejelentkezést. Ráadásul ezeken a felületeken korlátozott ideig lehet csak "játszani", így a kipróbáláson, gyakorláson kívül másra nem nagyon lehet használni. A limitről az alábbit állítja a dokumentáció:

Forrás
If you do not see these headers, that means pulling that image would not count towards pull limits. This could be because you are authenticated with a user associated with a Legacy/Pro/Team Docker Hub account, or because the image or your IP is unlimited in partnership with a publisher, provider, or open source organization.

Tehát a gyakorlásra, ingyenesen létrehozott, ideiglenes szervereken nem kell tartani a letöltési korlátoktól, viszont tapasztalatom szerint gyakori, hogy az oldal be sem tölt, csak többszöri probálkozásra és a grafikus felület sem hibamentes, de ez nem befolyásolja, hogy egy nagyon jó lehetőség a próbálgatásra. Ha szeretnél gyakorolni és nincs ötleted, milyen parancsokat futtass először, a Play With Docker oldalán találsz oktatóanyagokat is és hivatkozásokat további forrásokra, könyvekre is. Néhány parancsot már én is mutattam korábban, és még várható újabb sorozat is.

hacker ábra a pixabay.com-ról

Ha saját gépen dolgozol, és szeretnéd tudni, mennyi letöltésed van még, a már fentebb linkelt Download rate limit oldalon találsz utasítást arra, hogyna lehet lekérdezni, ez viszont aligha nevezhető egy kényelmes megoldásnak, ezért készítettem egy Bash szkriptet, amit a következő linkre kattintva elérhetsz a GitHub-on: download-rate-limit. Paraméter nélkül csak az anonim limitet kapod vissza JSON formátumban, de a nevet és jelszót is átadva az első és második paraméterben, az autentikált felhasználódra vonatkozó adatokat is lekérdezheted. Mentsd le a gépre, amelyiket használni szeretnéd, adj neki futtatási jogot, majd már használható is, amennyiben van jq és "curl" program telepítve, ami jelenleg szükséges a Docker registry API eléréséhez is.

Megjegyzés: Időközben megjelent elérhető lett a Hub CLI, ami többek között a rate limitet is le tudja kérdezni és json-ban is visszaadni

curl https://raw.githubusercontent.com/itsziget/scripts-for-docker/7cbf2c4c07c3c7406d56d3c3d58e6dd24e7d786f/bin/docker-ratelimit-list > docker-ratelimit-list
chmod +x docker-ratelimit-list
./docker-ratelimit-list userneved jelszavad

Hogy a jelszavad viszont ne kerüljön be a bash history-ba, és a processek listázásakor se lehessen még rövid időre se elkapni a jelszavad, érdemes azt változóba bekérni:

./docker-ratelimit-list userneved "$(read -rs pass && echo $pass)"

Így be kell gépelni a jelszót, amit nem fog megjeleníteni a képernyőn sem, az eredmény pedig ilyesmi lesz:

{"anonymous":{"limit":{"value": 100, "interval": 21600},"remaining":{"value": 100, "interval": 21600}},"authenticated":{"limit":{"value": 200, "interval": 21600},"remaining":{"value": 200, "interval": 21600}}}

Vagy használhatod a jq programot, ami amúgy is szükséges a szkript futtatásához is:

./docker-ratelimit-list userneved "$(read -rs pass && echo $pass)" | jq '.'

Így egy szebb kimenetet kapsz.

{
  "anonymous": {
    "limit": {
      "value": 100,
      "interval": 21600
    },
    "remaining": {
      "value": 100,
      "interval": 21600
    }
  },
  "authenticated": {
    "limit": {
      "value": 200,
      "interval": 21600
    },
    "remaining": {
      "value": 200,
      "interval": 21600
    }
  }
}

Ha még nincs saját gépeden Docker, a dokumentáció ebben is segít, de hamarosan én is jelentkezem többféle telepítési módszer bemutatásával. Kövesd az oldalt a facebookon, és nem maradsz le az újdonságokról.

Kategóriák: 
Megosztás/Mentés