Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Ar galiu naudoti kitą pagrindinį „Go“ programos vaizdą „Docker“.


Ar galiu naudoti kitą pagrindinį „Go“ programos vaizdą „Docker“.


Taip, „Go“ programai „Docker“ galite naudoti kitą pagrindinį vaizdą. Štai keletas variantų ir svarstymų:

1. Oficialus Golango vaizdas:
- Oficialus „golang“ įvaizdis yra geras atspirties taškas ir jį rekomenduoja „Docker“ komanda.
- Tai suteikia būtiną „Go“ įrankių grandinę ir priklausomybes, kad būtų galima sukurti ir paleisti „Go“ programą.
– Pavyzdys: „FROM golang:1.19-alpine“.

2. Alpių vaizdas:
- Vaizdas „golang:alpine“ yra mažesnis oficialaus „golang“ vaizdo variantas, pagrįstas „Alpine Linux“ paskirstymu.
- Dėl to gaunami mažesni galutiniai „Docker“ vaizdai, o tai naudinga diegiant.
- Tačiau Alpių vaizdas gali turėti suderinamumo problemų su kai kuriomis bibliotekomis, kurios priklauso nuo glibc.
– Pavyzdys: „FROM golang:1.19-alpine“.

3. Vaizdas be platinimo:
- „Distroless“ vaizdai yra minimalūs, ne šakniniai „Docker“ vaizdai, kuriuose yra tik jūsų programa ir jos vykdymo laiko priklausomybės.
- Jie sukurti taip, kad būtų kuo mažesni ir saugesni, be paketų tvarkyklės, apvalkalo ar kitų nereikalingų komponentų.
– Pavyzdys: „IŠ gcr.io/distroless/base-debian11“.

4. Nubrėžtas vaizdas:
– „Scratch“ vaizdas yra tuščias pagrindinis vaizdas, o tai reiškia, kad jame nėra operacinės sistemos, bibliotekų ar kitų priklausomybių.
- Dėl to gaunamas mažiausias įmanomas „Docker“ vaizdas, tačiau tam reikia, kad jūsų programa būtų statiškai kompiliuojama ir įtrauktos visos būtinos priklausomybės.
– Pavyzdys: „Nuo nulio“.

Renkantis pagrindinį vaizdą, atsižvelkite į šiuos veiksnius:
- Vaizdo dydis: paprastai pirmenybė teikiama mažesniems vaizdams, kad būtų galima greičiau įdiegti ir sumažinti saugojimo poreikius.
- Suderinamumas: įsitikinkite, kad jūsų programa ir jos priklausomybės yra suderinamos su pasirinktu baziniu vaizdu.
- Sauga: be platinimo ir įbrėžimų vaizdai yra saugesni, nes jų atakos paviršius yra mažesnis.
Derinimas: vaizdus su visa operacine sistema (pvz., „golang“) gali būti lengviau derinti, nes galite pasiekti sudėtinio rodinio apvalkalą ir paslaugų programas.

Bazinio vaizdo pasirinkimas galiausiai priklauso nuo jūsų konkrečių reikalavimų, pvz., vaizdo dydžio, saugumo ir „Go“ programos sudėtingumo. Įprasta naudoti oficialų „golang“ vaizdą kuriant ir testuojant, o tada perjungiama į minimalesnį vaizdą, pvz., „distroless“ arba „scratch“ gamybiniams diegimams.

Citatos:
[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-minimalist-docker-image-to-run-your-golang-app-33j0