Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Vai es varu izmantot citu pamata attēlu savai Go lietojumprogrammai programmā Docker


Vai es varu izmantot citu pamata attēlu savai Go lietojumprogrammai programmā Docker


Jā, varat izmantot citu pamata attēlu savai Go lietojumprogrammai programmā Docker. Šeit ir dažas iespējas un apsvērumi:

1. Oficiālais Golang attēls:
- Oficiālais "golang" attēls ir labs sākumpunkts, un to iesaka Docker komanda.
- Tas nodrošina nepieciešamo Go rīku ķēdi un atkarības, lai izveidotu un palaistu Go lietojumprogrammu.
- Piemērs: "FROM golang:1.19-alpine".

2. Attēls, kas balstīts uz kalniem:
- Attēls "golang:alpine" ir mazāks oficiālā "golang" attēla variants, kas balstīts uz Alpine Linux izplatīšanu.
- Tas rada mazākus galīgos Docker attēlus, kas ir izdevīgi izvietošanai.
- Tomēr Alpu attēlam var būt saderības problēmas ar dažām bibliotēkām, kas ir atkarīgas no glibc.
- Piemērs: "FROM golang:1.19-alpine".

3. Bez Distroless attēls:
- Distroless attēli ir minimāli Docker attēli, kas nav balstīti uz saknēm un satur tikai jūsu lietojumprogrammu un tās izpildlaika atkarības.
- Tie ir izstrādāti tā, lai tie būtu pēc iespējas mazāki un drošāki, neietverot pakotņu pārvaldnieku, čaulu vai citus nevajadzīgus komponentus.
- Piemērs: NO gcr.io/distroless/base-debian11

4. Skrāpēts attēls:
- Scratch attēls ir tukšs pamata attēls, kas nozīmē, ka tajā nav operētājsistēmas, bibliotēku vai jebkādas citas atkarības.
- Tā rezultātā tiek iegūts mazākais iespējamais Docker attēls, taču tas prasa, lai jūsu lietojumprogramma būtu statiski kompilēta un tajā ir jāietver visas nepieciešamās atkarības.
- Piemērs: "NO nulles".

Izvēloties pamata attēlu, ņemiet vērā šādus faktorus:
- Attēla lielums: parasti priekšroka tiek dota mazākiem attēliem, lai nodrošinātu ātrāku izvietošanu un samazinātu uzglabāšanas prasības.
- Saderība: pārliecinieties, vai jūsu lietojumprogramma un tās atkarības ir saderīgas ar jūsu izvēlēto pamata attēlu.
- Drošība: Distroless un skrāpējumu attēli ir drošāki, jo tiem ir mazāka uzbrukuma virsma.
Atkļūdošana: attēlus ar pilnu operētājsistēmu (piem., “golang”) var būt vieglāk atkļūdot, jo varat piekļūt konteinera apvalkam un utilītprogrammām.

Pamatattēla izvēle galu galā ir atkarīga no jūsu īpašajām prasībām, piemēram, attēla izmēra, drošības un jūsu Go lietojumprogrammas sarežģītības. Izstrādei un testēšanai parasti izmanto oficiālo “golang” attēlu un pēc tam ražošanas izvietošanai pārslēdzas uz minimālāku attēlu, piemēram, “distroless” vai “scratch”.

Citāts:
[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