Docker'in bu yapısı; özellikle nvidia jetson, raspberry pi, orange pi gibi düşük güçlü cihazlarda kullanılmalık docker imajları oluşturmayı veya onlarda çalışan imajları kontrol etmeyi sağlar, zaten hantal çalışan düşük güçlü donanımları daha efektif kullanmamızı sağlar.
Kurulum
Docker'in bu özelliği stable docker paketleri ile gelmemekte. Burada Windows ve Mac işletim sistemleri için çözüm Docker Desktop'un ayarlarını değiştirerek stable kanaldan edge kanalına geçmektir.
bu ayarı yapmak otomatik olarak çoklumimari kullanımı için docker'i uygun hale getirecektir.
Linux'ta ise biraz kabakuvvet kullanmamız lazım. Başta sistemi hazırlayalım. Sisteme qemu kurmamız gerekmekte
İsteğe bağlı olarak docker'in edge kanalına geçebilirsiniz. Ancak stable kanalda da bu çalışacaktır. Ardından yapmamız gereken ise register betiklerini çalıştırmak.
Farklı Mimarilere Ait İmajları Çalıştırmak
Herhangi bir başka mimariye ait imajı getirelim. Ben aarch64 için oluşturulmuş ubuntu imajını getirelim.
Eğer ki çalışırsa sorun yok demektir.
Çoklumimari İmajlar Oluşturmak
buildx eklentisi sayesinde başka bir mimari için docker imajları inşaa edebiliriz. buildx eklentisini docker içerisine elle de ekleyebilir.
Başta docker buildx reposundan sisteminiz için uygun ikili dosyayı indirin. Sonrasında bu dosyayı ~/.docker/cli-plugins/docker-buildx konumuna atın ve çalıştırılabilir yetkisi verin.
Ardından docker buildx komutunu çalıştırırsanız, docker içerisine bu komutun eklendiğini göreceğiz
Şimdi builder‘ları kontrol edelim.
Sadece default builderimiz var ve x86_64, arm64, arm/v7 ve arm/v6 mimarileri için çalışan bir default, builderimiz var.
Yeni bir builder oluşturalım.
Biraz önceki oluşturduğumuz ubuntu imajını kullanarak farklı mimariler için imajlar oluşturabiliriz. Bunun için Dockerfile oluşturalım.
buildx ile bunu inşaa edelim.
Eğer isterseniz bu inşaa ettiğiniz imajı inşaa eder etmez docker.io hesabınıza gönderebilirsiniz bunun için yukardaki komut fazladan bir --push parametresi alır.
komutun bitmesine mutakiben imajları kontrol edelim.
arm64 imajının çalışırlığını kontrol edelim
örnekte olduğu gibi komutun çıktısı eğer aarch64 olarak veriliyorsa sorun yok demektir. Güle güle kullanın.