Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Használhatok más alapképet a Go alkalmazásomhoz a Dockerben?


Használhatok más alapképet a Go alkalmazásomhoz a Dockerben?


Igen, használhat egy másik alapképet a Go alkalmazáshoz a Dockerben. Íme néhány lehetőség és szempont:

1. Hivatalos Golang-kép:
- A hivatalos "golang" kép jó kiindulópont, és a Docker csapata ajánlja.
- Biztosítja a Go alkalmazás létrehozásához és futtatásához szükséges Go eszközláncot és függőségeket.
- Példa: "FROM golang:1.19-alpine".

2. Alpesi alapú kép:
- A "golang:alpine" kép a hivatalos "golang" kép egy kisebb változata, amely az Alpine Linux disztribúción alapul.
- Kisebb végleges Docker-képeket eredményez, ami előnyös a telepítéshez.
- Az Alpine-alapú képfájl azonban kompatibilitási problémákat okozhat egyes, glibc-től függő könyvtárakkal.
- Példa: "FROM golang:1.19-alpine".

3. Distroless Image:
- A Distroless képek minimális, nem root alapú Docker-képfájlok, amelyek csak az alkalmazást és annak futásidejű függőségeit tartalmazzák.
- A lehető legkisebbre és biztonságosra tervezték, csomagkezelő, shell vagy egyéb szükségtelen összetevők nélkül.
- Példa: `FROM gcr.io/distroless/base-debian11`

4. Kaparós kép:
- A "scratch" kép egy üres alapkép, ami azt jelenti, hogy nem tartalmaz operációs rendszert, könyvtárakat vagy bármilyen más függőséget.
- Ez a lehető legkisebb Docker-képet eredményezi, de ehhez statikusan le kell fordítani az alkalmazást, és tartalmaznia kell az összes szükséges függőséget.
- Példa: "A semmiből".

Az alapkép kiválasztásakor vegye figyelembe a következő tényezőket:
- Képméret: Általában a kisebb képeket részesítik előnyben a gyorsabb üzembe helyezés és a csökkentett tárolási igények érdekében.
- Kompatibilitás: Győződjön meg arról, hogy alkalmazása és függőségei kompatibilisek a választott alapképpel.
- Biztonság: A disztromentes és karcolásos képek biztonságosabbak, mivel kisebb a támadási felületük.
- Hibakeresés: A teljes operációs rendszerrel (pl. "golang") rendelkező képek hibakeresése könnyebb lehet, mivel hozzáférhet a tároló héjához és a segédprogramokhoz.

Az alapkép kiválasztása végső soron az Ön speciális követelményeitől függ, például a képmérettől, a biztonságtól és a Go alkalmazás összetettségétől. Gyakori, hogy a hivatalos "golang" képet használják fejlesztéshez és teszteléshez, majd átváltanak egy minimálisabb képre, például a "distroless" vagy a "scratch" képre az éles telepítéseknél.

Idézetek:
[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