Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Môžem použiť iný základný obrázok pre svoju aplikáciu Go v Dockeri


Môžem použiť iný základný obrázok pre svoju aplikáciu Go v Dockeri


Áno, pre aplikáciu Go v Dockeri môžete použiť iný základný obrázok. Tu je niekoľko možností a úvah:

1. Oficiálny obrázok Golang:
- Oficiálny obrázok `golang` je dobrým východiskovým bodom a odporúča ho tím Docker.
- Poskytuje potrebný reťazec nástrojov Go a závislosti na zostavenie a spustenie vašej aplikácie Go.
– Príklad: „FROM golang:1,19-alpine“.

2. Obrázok z Alp:
- Obrázok `golang:alpine` je menší variant oficiálneho obrazu `golang`, založený na distribúcii Alpine Linux.
- Výsledkom sú menšie konečné obrázky Docker, čo je výhodné pre nasadenie.
- Obraz založený na Alpine však môže mať problémy s kompatibilitou s niektorými knižnicami, ktoré závisia od glibc.
– Príklad: „FROM golang:1,19-alpine“.

3. Obrázok bez obsahu:
- Obrazy Distroless sú minimálne obrazy Docker, ktoré nie sú založené na oprávneniach typu root, ktoré obsahujú iba vašu aplikáciu a jej závislosti od runtime.
- Sú navrhnuté tak, aby boli čo najmenšie a najbezpečnejšie, bez správcu balíkov, shellu alebo iných nepotrebných komponentov.
- Príklad: `FROM gcr.io/distroless/base-debian11`

4. Scratch Image:
- Obrázok „scratch“ je prázdny základný obrázok, čo znamená, že neobsahuje žiadny operačný systém, knižnice ani iné závislosti.
- Výsledkom je najmenší možný obraz Docker, ale vyžaduje to, aby bola vaša aplikácia staticky skompilovaná a obsahovala všetky potrebné závislosti.
– Príklad: „OD nuly“.

Pri výbere základného obrázka zvážte nasledujúce faktory:
- Veľkosť obrázka: Vo všeobecnosti sa uprednostňujú menšie obrázky z dôvodu rýchlejšieho nasadenia a znížených nárokov na úložisko.
- Kompatibilita: Uistite sa, že vaša aplikácia a jej závislosti sú kompatibilné so základným obrázkom, ktorý si vyberiete.
- Bezpečnosť: Bezpečné a poškriabané obrázky sú bezpečnejšie, pretože majú menšiu útočnú plochu.
- Ladenie: Obrázky s úplným operačným systémom (napr. „golang“) možno ľahšie ladiť, pretože máte prístup k shellu a pomôckam kontajnera.

Výber základného obrazu v konečnom dôsledku závisí od vašich špecifických požiadaviek, ako je veľkosť obrazu, zabezpečenie a zložitosť vašej aplikácie Go. Na vývoj a testovanie je bežné používať oficiálny obrázok `golang` a potom pre produkčné nasadenia prejsť na minimálnejší obrázok, ako napríklad `distroless` alebo `scratch`.

Citácie:
[1] https://stackoverflow.com/questions/47028597/choosing-golang-docker-base-image
[2] https://hub.docker.com/_/golang
[3] https://snyk.io/blog/containerizing-go-applications-with-docker/
[4] https://docs.docker.com/language/golang/build-images/
[5] https://dev.to/chseki/build-a-super-minimalistic-docker-image-to-run-your-golang-app-33j0