Docker, uygulamaların ve hizmetlerin konteynerler içinde çalışmasını sağlamak için kullanılan bir platformdur. Docker imajları, uygulama ortamlarını tanımlayan her şeyi içeren, çalıştırılabilir paketlerdir. İmajlar, konteyner oluşturulurken kullanılan şablonlardır. Docker imajları, Dockerfile adı verilen bir dosyada tanımlanan talimatlara dayanarak oluşturulur. Bu talimatlar, yazılımın nasıl yapılandırılacağını, hangi dosyaların ekleneceğini ve hangi komutların çalıştırılacağını içerir. Docker imajı oluşturma süreci, projenin taşınabilirliğini ve tutarlılığını artırmayı hedefler.
Dockerfile Nedir?
Dockerfile, bir Docker imajını oluşturmak için kullanılan talimatları içeren metin tabanlı bir dosyadır. Her Dockerfile, bir temel imaj (base image) ile başlar ve ardından farklı talimatlarla imajın nasıl oluşturulacağını belirtir. Temel imaj, genellikle bir işletim sistemi veya bir uygulama framework’ü içerebilir. Dockerfile içinde yer alan temel talimatlar şunlardır:
– `FROM`: Kullanılacak temel imajı belirtir.
– `RUN`: İmaj oluşturulurken çalıştırılacak komutları içerir.
– `COPY` veya `ADD`: Yerel dosyaların imaja kopyalanmasını sağlar.
– `CMD`: Konteyner çalıştırıldığında hangi komutun çalıştırılacağını belirtir.
Basit Bir Dockerfile Örneği
Bir Dockerfile yazarken, genellikle bir başlangıç noktası olarak bir temel imaj seçmek gerekir. Örneğin, Python tabanlı bir uygulama için bir Dockerfile şu şekilde olabilir:
“`
Temel imaj olarak Python 3.8 kullan
FROM python:3.8
Çalışma dizini oluştur ve belirle
WORKDIR /app
Gereksinim dosyasını imaja kopyala
COPY requirements.txt .
Gereksinimleri yükle
RUN pip install –no-cache-dir -r requirements.txt
Uygulama dosyalarını kopyala
COPY . .
Uygulamayı çalıştır
CMD [“python”, “app.py”]
“`
Bu örnekte, kullanılan temel imaj Python 3.8’dir. Çalışma dizini oluşturularak `requirements.txt` dosyası kopyalanır, ardından gerekli kütüphaneler yüklenir. Son olarak, uygulama çalıştırılır.
Docker İmajı Oluşturma
Docker imajı oluşturma işlemi oldukça basittir. Dockerfile dosyasının bulunduğu dizine gidilir ve aşağıdaki komut çalıştırılır:
“`
docker build -t image_adi:tag .
“`
Burada `-t` seçeneği, imaja bir isim ve etiket vermek için kullanılır. `image_adi` ve `tag`, imaja verilen ad ve etiket olup, genellikle projenin adı ve sürüm numarası olarak belirlenir. Sonundaki `.` ifadesi, Dockerfile dosyasının bulunduğu dizini belirtmektedir. Örneğin:
“`
docker build -t myapp:1.0 .
“`
Docker İmajının İnşa Süreci
Docker imajı oluşturulurken, Dockerfile içindeki talimatlar sırayla işlenir. Her bir komut çalıştırıldıktan sonra, mevcut durum bir imaj katmanı olarak saklanır. Docker, katmanları cache (önbellek) olarak tutar ve yalnızca değişiklik yapılan katmanları yeniden inşa eder. Bu, imaj oluşturma sürecini daha hızlı hale getirir. Örneğin, yalnızca `RUN` komutu değiştiyse, Docker sadece bu katmanı yeniden oluşturur.
İmajların Listelenmesi ve Kontrolü
Docker’da oluşturulan imajları görüntülemek için aşağıdaki komut kullanılabilir:
“`
docker images
“`
Bu komut, mevcut imajların listesini, her birinin ismini, etiketini ve diğer bilgilerini gösterir. Oluşturulan imajların sağlıklı bir şekilde inşa edilip edilmediğini kontrol etmek için imaj üzerinde çalışan bir konteyner oluşturulabilir.
Imajı Çalıştırma
Oluşturulan Docker imajı, bir konteyner olarak çalıştırılabilir. Aşağıdaki komut, belirli bir imajdan konteyner oluşturmak ve çalıştırmak için kullanılır:
“`
docker run -d –name mycontainer myapp:1.0
“`
Burada `-d` seçeneği, konteynerin arka planda çalıştırılmasını sağlar. `–name` ise konteyner için belirli bir isim atanmasını sağlar. İmajın adı ve etiketi de `myapp:1.0` şeklinde belirtilir.
Hata Ayıklama ve Güncelleme
Eğer imaj oluşturma sırasında hata alındıysa, hata mesajlarına dikkat edilmelidir. Genellikle, yanlış yazılan komutlar veya eksik dosyalar bu hatalara sebep olur. Dockerfile’da yapılan değişikliklerin ardından yeniden bir build süreci başlatmak için yine `docker build` komutu kullanılabilir. Gerekli olan dosyalar ve kütüphaneler doğru bir şekilde sağlandığında, başarılı bir inşa süreci gerçekleşecektir.
Özel İmajlar ve Paylaşma
Docker Hub gibi platformlar, oluşturulan imajların paylaşılmasını sağlar. Oluşturulan bir imaj, aşağıdaki komutla Docker Hub’a yüklenebilir:
“`
docker push kullanici_adi/myapp:1.0
“`
Bu işlem, imajın bulutta depolanmasını sağlar, böylece ihtiyaç duyuldukça farklı ortamlarda kullanılabilir.
Docker imajı oluşturma süreci, uygulamaların hızla dağıtılmasını, taşınmasını ve yönetilmesini kolaylaştırır. İmajlar, yazılım geliştirme ve dağıtım süreçlerinde önemli bir rol oynamaktadır.