Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Voinko käyttää toista peruskuvaa Go-sovellukselleni Dockerissa


Voinko käyttää toista peruskuvaa Go-sovellukselleni Dockerissa


Kyllä, voit käyttää toista peruskuvaa Go-sovelluksellesi Dockerissa. Tässä on joitain vaihtoehtoja ja huomioita:

1. Virallinen Golang-kuva:
- Virallinen "golang" -kuva on hyvä lähtökohta, ja Docker-tiimi suosittelee sitä.
- Se tarjoaa tarvittavan Go-työkaluketjun ja riippuvuuksia Go-sovelluksen rakentamiseen ja suorittamiseen.
- Esimerkki: "FROM golang:1.19-alpine".

2. Alppipohjainen kuva:
- "golang:alpine" -kuva on pienempi muunnos virallisesta "golang" -kuvasta, joka perustuu Alpine Linux -jakeluun.
- Se johtaa pienempiin lopullisiin Docker-kuviin, mikä on hyödyllistä käyttöönoton kannalta.
- Alpine-pohjaisessa kuvassa voi kuitenkin olla yhteensopivuusongelmia joidenkin glibc:stä riippuvien kirjastojen kanssa.
- Esimerkki: "FROM golang:1.19-alpine".

3. Distroless Image:
- Distroless-kuvat ovat minimaalisia, ei-root-pohjaisia ​​Docker-kuvia, jotka sisältävät vain sovelluksesi ja sen ajonaikaiset riippuvuudet.
- Ne on suunniteltu mahdollisimman pieniksi ja turvallisiksi ilman paketinhallintaa, kuorta tai muita tarpeettomia komponentteja.
- Esimerkki: "FROM gcr.io/distroless/base-debian11".

4. Raaputuskuva:
- "Scratch"-kuva on tyhjä peruskuva, mikä tarkoittaa, että se ei sisällä käyttöjärjestelmää, kirjastoja tai muita riippuvuuksia.
- Tämä johtaa pienimpään mahdolliseen Docker-kuvaan, mutta vaatii, että sovelluksesi on käännetty staattisesti ja sisältää kaikki tarvittavat riippuvuudet.
- Esimerkki: "Tyhjästä".

Kun valitset peruskuvaa, ota huomioon seuraavat tekijät:
- Kuvan koko: Pienempiä kuvia suositellaan yleensä nopeamman käyttöönoton ja pienentävien tallennustarpeiden vuoksi.
- Yhteensopivuus: Varmista, että sovelluksesi ja sen riippuvuudet ovat yhteensopivia valitsemasi peruskuvan kanssa.
- Turvallisuus: Distroless- ja scratch-kuvat ovat turvallisempia, koska niillä on pienempi hyökkäyspinta.
- Virheenkorjaus: Kuvia, joissa on täydellinen käyttöjärjestelmä (esim. "golang"), voi olla helpompi korjata, koska pääset käsiksi säilön kuoreen ja apuohjelmiin.

Peruskuvan valinta riippuu viime kädessä erityisvaatimuksistasi, kuten kuvan koosta, turvallisuudesta ja Go-sovelluksesi monimutkaisuudesta. On yleistä käyttää virallista "golang" -kuvaa kehitystä ja testausta varten ja vaihtaa sitten minimaaliseen kuvaan, kuten "distroless" tai "scratch" tuotantokäyttöön.

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