Başlarken
Önceki rehberde Docker’ın temel yapısını tanıttık. Bu rehberde ise bir uygulamayı “Dockerize” etmeye yani bir Docker konteyneri içinde çalışabilir hale getirmeye odaklanacağız. Ancak başlamadan önce Docker’ın bilgisayarımıza kurulması gerekiyor.
Kurulum Adımları:
- Docker’ın Resmî Web Sitesine Git: https://www.docker.com/products/docker-desktop
- İşletim Sistemine Uygun Sürümü Seç: Windows ya da macOS için olan sürümü indir.
- Kurulumu Başlat ve Takip Et: Kurulum sihirbazı seni adım adım yönlendirecek. Docker Desktop kurulduktan sonra sistem yeniden başlatılabilir.
- Kurulumu Kontrol Et: Terminal ya da komut satırına şu komutu yazarak Docker’ın çalıştığından emin olabilirsin:

Dockerize Etmek Nedir?
Bir uygulamayı Dockerize etmek, o uygulamayı bir Docker container içinde çalışacak hale getirmek anlamına gelir. Bu işlemle uygulaman tüm bağımlılıklarıyla birlikte paketlenir ve her ortamda (geliştirme, test, prod) aynı şekilde çalışması sağlanır.
Dockerize Etmenin Adımları
- Uygulama dosyalarını hazırla. (Örneğin bir Node.js, Java ya da Python uygulaması)
- Dockerfile oluştur. Bu dosyada uygulamanın nasıl çalışacağını tarif edersin.
- Image oluştur. Dockerfile’dan bir image üretirsin.
- Container başlat. Bu image’tan bir konteyner başlatarak uygulamayı ayağa kaldırırsın.
İlk Docker Komutları
Docker’ı kurduktan sonra, terminal veya komut satırı üzerinden bazı temel komutları kullanarak Docker’la nasıl çalıştığını görebilirsin. Bu komutlar, Docker dünyasına sağlam bir adım atmanı sağlar. Hadi birlikte öğrenelim:
docker version
Docker’ın yüklü olup olmadığını ve hangi sürümde olduğunu gösterir.

docker info
Docker sisteminle ilgili özet bilgi verir. Örneğin toplam kaç container var, kaç tanesi çalışıyor, kaç image yüklü gibi detayları öğrenirsin.

docker pull
Docker Hub gibi bir kayıt merkezinden bir image (imaj) indirmeni sağlar. Örneğin “hello-world” adlı örnek imajı şöyle çekebilirsin:

docker run
Bir image’tan bir container (konteyner) başlatmanı sağlar. Örnek:

docker ps
Şu anda çalışan tüm konteynerleri listeler:

docker images
Makinede yüklü olan Docker imajlarını listeler:

docker rm ve docker rmi
docker rm <id> : Konteyneri silmek için kullanılır.
.docker rmi <image_id> :İmajı silmek için kullanılır.
Bu komutlar başlangıç seviyesi için öğrenilmesi gereken komutlar. Elbette yeterli değiller fakat ilerki rehberlerde ilerleyeceğiz.
Örnek Dockerfile ile Uygulama Dockerize Etme
Aşağıda, Java 11 tabanlı bir Spring Boot uygulamasını Docker konteynerinde çalıştırmak için kullanabileceğimiz basit ve açıklamalı bir Dockerfile örneği yer almaktadır. Bu dosya, uygulamamızın Docker imajını oluşturmak ve konteyner olarak çalıştırmak için temel adımları içerir.

FROM
Docker imajının temelini belirler. Başka bir deyişle, bu komut hangi işletim sistemi veya hazır ortam üzerinde yeni imaj oluşturulacağını belirtir.
Örneğin: FROM adoptopenjdk/openjdk11 Java 11 yüklü bir ortam kullanacağımızı söyler.
WORKDIR
Konteyner içinde çalışma dizinini ayarlar. Bu dizin, sonraki komutların çalışacağı yerdir.
Örneğin: WORKDIR /app komutu, tüm işlemlerin /app klasöründe yapılacağını belirtir.
EXPOSE
Konteynerin hangi portunun dışarıya açılacağını belirtir. Bu, uygulamamızın dış dünyaya hangi porttan erişileceğini ifade eder.
Örneğin: EXPOSE 8080 ile 8080 portu açılır.
ADD
Yerel dosyaları veya dizinleri konteynere kopyalamak için kullanılır. Ayrıca URL’den dosya indirmeyi de destekler.
Örneğin: ADD target/myapp.jar myapp.jar ile yerel target klasöründeki jar dosyasını konteynere kopyalar.
ENTRYPOINT/CMD
Konteyner başlatıldığında çalışacak komutu tanımlar. Uygulamamızın nasıl başlayacağını belirtir. ENTRYPOINT yerine CMD komutunu da kullanabilirdik.
Örneğin: ENTRYPOINT["java", "-jar", "myapp.jar"] Java uygulamasını başlatır.
Docker Image Oluşturmak
docker build komutu, Dockerfile’da tanımladığınız talimatlara göre yeni bir Docker image oluşturur.
Bu komut Dockerfile’ı okur, katmanlar halinde işlemleri uygular ve sonunda sizin belirttiğiniz isimle bir image üretir.

Docker image yaratmak için build komutunu kullanırız. “-t “ ise oluşturulacak image’e bir tag vermemizi sağlar. Eğer bu parametreyi kullanmazsak, docker engine bizim yerimize random bir tag atayacaktır. “.” Dockerfile’ın bulunduğu klasörü belirttik (bu dizinde).
Docker Image Container Olarak Nasıl Çalışır?
Oluşturduğumuz image’i aşağıdaki komut ile container olarak ayağa kaldırabiliriz.

Bu komutla, oluşturduğumuz Docker image’ını çalıştırıyoruz. run ifadesi, image’ın çalıştırılmasını sağlar. -d parametresiyle container’ımızı arka planda yani “detached mode”da başlatırız. Bu, terminal ekranında logları görmeyeceğimiz ve uygulamanın sessizce çalışacağı anlamına gelir. --name java-spring-app kısmıyla container’ımıza özel bir isim veriyoruz; eğer bu parametreyi kullanmazsak, Docker rastgele bir isim atar. -p 8080:8080 ise port yönlendirmesini belirtir. Yani bilgisayarımızdaki 8080 portunu, container içindeki 8080 portuna bağlarız. Bu sayede tarayıcıda localhost:8080 yazarak uygulamaya ulaşabiliriz. En sonda yer alan java-spring-app, çalıştırılacak image’ın adıdır ve bu image, daha önce docker build komutuyla oluşturulmuştur.
Sonuç olarak, bu rehberde Docker kurulumu, temel komutlar, Dockerfile yazımı ve bir uygulamanın Dockerize edilerek nasıl container olarak çalıştırılacağını adım adım öğrendik. Artık kendi projelerinizi daha taşınabilir, güvenli ve ölçeklenebilir bir şekilde Docker üzerinde çalıştırmaya hazırsınız.