Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Docker'daki Go uygulamam için farklı bir temel görüntü kullanabilir miyim?


Docker'daki Go uygulamam için farklı bir temel görüntü kullanabilir miyim?


Evet, Docker'daki Go uygulamanız için farklı bir temel görüntü kullanabilirsiniz. İşte bazı seçenekler ve dikkate alınması gereken noktalar:

1. Resmi Golang Resmi:
- Resmi "golang" görüntüsü iyi bir başlangıç ​​noktasıdır ve Docker ekibi tarafından önerilmektedir.
- Go uygulamanızı oluşturmak ve çalıştırmak için gerekli Go araç zincirini ve bağımlılıklarını sağlar.
- Örnek: `golang'DAN:1.19-alpine`

2. Alp Tabanlı Görüntü:
- 'golang:alpine' görüntüsü, Alpine Linux dağıtımını temel alan resmi 'golang' görüntüsünün daha küçük bir çeşididir.
- Daha küçük nihai Docker görüntüleri elde edilmesini sağlar, bu da dağıtım için faydalıdır.
- Ancak Alpine tabanlı görüntünün glibc'ye bağlı bazı kitaplıklarla uyumluluk sorunları olabilir.
- Örnek: `golang'DAN:1.19-alpine`

3. Distroless Görüntü:
- Dağıtımsız görüntüler, yalnızca uygulamanızı ve onun çalışma zamanı bağımlılıklarını içeren minimal, kök tabanlı olmayan Docker görüntüleridir.
- Paket yöneticisi, kabuk veya diğer gereksiz bileşenleri içermeden, mümkün olduğunca küçük ve güvenli olacak şekilde tasarlanmıştır.
- Örnek: 'gcr.io/distroless/base-debian11'DEN'

4. Çizik Görüntü:
- "Scratch" görüntüsü boş bir temel görüntüdür; bu, işletim sistemi, kitaplık veya başka herhangi bir bağımlılık içermediği anlamına gelir.
- Bu, mümkün olan en küçük Docker görüntüsüyle sonuçlanır, ancak uygulamanızın statik olarak derlenmesini ve gerekli tüm bağımlılıkları içermesini gerektirir.
- Örnek: 'Sıfırdan'

Temel görseli seçerken aşağıdaki faktörleri göz önünde bulundurun:
- Görüntü Boyutu: Daha hızlı dağıtım ve daha az depolama gereksinimleri için genellikle daha küçük görüntüler tercih edilir.
- Uyumluluk: Uygulamanızın ve bağımlılıklarının seçtiğiniz temel görüntüyle uyumlu olduğundan emin olun.
- Güvenlik: Dağıtımsız ve çizik görüntüler, daha küçük bir saldırı yüzeyine sahip oldukları için daha güvenlidir.
- Hata ayıklama: Tam işletim sistemine (ör. `golang`) sahip görsellerde hata ayıklamak daha kolay olabilir çünkü kapsayıcının kabuğuna ve yardımcı programlara erişebilirsiniz.

Temel görüntünün seçimi sonuçta görüntü boyutu, güvenlik ve Go uygulamanızın karmaşıklığı gibi özel gereksinimlerinize bağlıdır. Geliştirme ve test için resmi "golang" görüntüsünü kullanmak ve ardından üretim dağıtımları için "dağıtımsız" veya "çizik" gibi daha minimal bir görüntüye geçmek yaygındır.

Alıntılar:
[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