Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Mohu pro svou aplikaci Go v Dockeru použít jiný základní obrázek


Mohu pro svou aplikaci Go v Dockeru použít jiný základní obrázek


Ano, pro aplikaci Go v Dockeru můžete použít jiný základní obrázek. Zde je několik možností a úvah:

1. Oficiální obrázek Golang:
- Oficiální obrázek `golang` je dobrým výchozím bodem a je doporučen týmem Docker.
- Poskytuje nezbytný řetězec nástrojů Go a závislosti k sestavení a spuštění vaší aplikace Go.
- Příklad: `FROM golang:1.19-alpine`

2. Snímek z Alp:
- Obraz `golang:alpine` je menší varianta oficiálního obrazu `golang`, založený na distribuci Alpine Linux.
- Výsledkem jsou menší finální obrazy Dockeru, což je výhodné pro nasazení.
- Obraz založený na Alpine však může mít problémy s kompatibilitou s některými knihovnami, které závisí na glibc.
- Příklad: `FROM golang:1.19-alpine`

3. Distroless Image:
- Obrazy Distroless jsou minimální obrazy Dockeru, které nejsou založeny na rootu, které obsahují pouze vaši aplikaci a její běhové závislosti.
- Jsou navrženy tak, aby byly co nejmenší a bezpečné, bez správce balíčků, shellu nebo jiných nepotřebných komponent.
- Příklad: `FROM gcr.io/distroless/base-debian11`

4. Scratch Image:
- Obraz `scratch` je prázdný základní obraz, což znamená, že neobsahuje žádný operační systém, knihovny ani žádné jiné závislosti.
- Výsledkem je nejmenší možný obraz Dockeru, ale vyžaduje to, aby byla vaše aplikace staticky zkompilována a zahrnovala všechny potřebné závislosti.
- Příklad: „OD nuly“.

Při výběru základního obrázku zvažte následující faktory:
- Velikost obrázku: Obecně jsou preferovány menší obrázky pro rychlejší nasazení a nižší nároky na úložiště.
- Kompatibilita: Ujistěte se, že vaše aplikace a její závislosti jsou kompatibilní se základní bitovou kopií, kterou si vyberete.
- Zabezpečení: Bezpečné a poškrábané obrázky jsou bezpečnější, protože mají menší útočnou plochu.
- Ladění: Obrázky s úplným operačním systémem (např. `golang`) se mohou ladit snadněji, protože máte přístup k shellu a nástrojům kontejneru.

Výběr základní bitové kopie nakonec závisí na vašich konkrétních požadavcích, jako je velikost bitové kopie, zabezpečení a složitost vaší aplikace Go. Je běžné používat oficiální image `golang` pro vývoj a testování a poté přejít na minimálnější image jako `distroless` nebo `scratch` pro produkční nasazení.

Citace:
[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