Statik Docker Uygulaması Oluşturma
Docker konteyner'larının en büyük dezavantajı kendi libc kütüphanesini veya uygulamalara ait diğer bağımlılıkların konteyner içerisinde olması gerekmektedir. Bunu aşmak için statik uygulamalar oluşturmak en kolay yollardan birisi.
Bir Örnek
Bir uygulama örneği oluşturalım. Mesela, bir merhaba dünya kodu oluşturalım ve bunu hello.cc
dosyası içerisine yazdıralım.
GCC kullanarak bu kodu derleyelim
Bu şekilde derlemiş olduğumuz kodlar dinamik olarak linklenmiş olur. Ve bu uygulamanın bağımlılıklarını ldd
ile listeleyelim.
Eğer ki bu kodu ikili dosyayı scratch
docker imajı içerisinde çalıştırmaya çalışırsak muhtemel olarak hata alacağız ve çalışmayacak. Eğer çalışmasını istersek yukarıdaki bağımlılıkları imaj içerisine eklememiz gerekecek ve bu sebeple imaj şişecek.
Ancak biz bu uygulamayı statik olarak linklersek bu hataya maruz kalmadan ve imajı şişirmeden ve bağımlılıklarla boğuşmadan ikili çalıştırılabilir dosyalar elde ederiz. Bunun için mevcut komut -static
parametresi eklemek yeterlidir.
Şimdi de bağımlılıkları kontrol edelim.
Bu şekilde statik derlenmiş ikili dosyalar docker imajı içerisinde ek bir dosyaya veya bağımlılığa ihtiyaç duymadan çalışır. Şimdi de bir Dockerfile oluşturalım.
Bu Dockerfile ile bir imaj inşaa edelim.
Şimdi de docker imajını çalıştıralım.
Örnekte gördüğünüz gibi daha küçük docker imajları oluşturmak veya gereksiz bağımlılıklardan kurtulmak için bu yöntemi kullanabilirsiniz.