Docker'ı kendi Linux sunucunuzda öğrenmek için önerdiğimiz yol şudur: önce Docker Engine'i dağıtımınızın resmî deposundan kurun, ardından docker grubunun ne anlama geldiğini öğrenerek sudo olmadan çalışmayı ayarlayın, Compose eklentisini doğrulayın ve ilk Compose dosyanızı yazın. Bu temel oturduktan sonra depolama, ağ, imaj oluşturma, Compose ileri konuları ve güvenlik başlıklarına ihtiyacınız oldukça geçebilirsiniz. Bu sayfa, Docker serimizdeki 49 yazıyı bu öğrenme yoluna göre sekiz grupta topluyor.

Her grubun başında o konunun neden önemli olduğunu kısaca açıklıyor, ardından yazıları birer cümlelik özetle listeliyoruz. Yazıların tamamı Docker'ın resmî belgelerine (Docker Engine 29.9.3'e kadar) dayanır ve Compose dosyası örnekleri Docker Compose ile doğrulanmıştır. Docker'ın ne olduğunu, neden kullanıldığını ve bir uygulamayı uçtan uca nasıl yayına aldığınızı merak ediyorsanız işe Docker ile uygulama deploy yazısıyla başlayın.

Docker'a kısa bir bakış

Docker, uygulamanızı ve bağımlılıklarını bir imaj olarak paketleyip bu imajdan container'lar çalıştırmanızı sağlar. Sunucu tarafında işi yapan bileşen Docker Engine'dir: arka planda çalışan daemon (dockerd), onunla bir Unix soketi üzerinden konuşan docker komut satırı istemcisi ve container yaşam döngüsünü yöneten containerd. Belgelere göre daemon varsayılan olarak root yetkisiyle çalışır; bu yüzden daemon'ı kimin kontrol edebildiği bir güvenlik kararıdır. Bu mimarinin ayrıntılarını tekrar etmek yerine ilgili yazılara bağlantı veriyoruz.

Nereden başlamalı?

Nereden başlamalı? 1. Kurulum, 2. İzinler, 3. Compose, 4. İlk proje

Docker'a yeni başlıyorsanız şu sırayı izlemenizi öneririz. Her adım bir öncekinin üzerine kurulur:

Kurulumu kontrol etmek

Kurulumdan sonra üç komutla durumu görebilirsiniz. docker version, istemci (Client) ve sunucu (Server) için ayrı bölümler halinde sürüm ve API sürümü bilgisini yazar; belgelere göre sunucu bölümündeki API satırı daemon'ın desteklediği en düşük API sürümünü de gösterir. docker compose version Compose eklentisinin sürümünü verir. docker info ise daemon'dan sistem genelindeki bilgiyi ister; belgeler Docker'ın çalışıp çalışmadığını işletim sisteminden bağımsız kontrol etmenin yolu olarak bu komutu gösterir.

bash
docker version
docker compose version
docker info

docker version veya docker info bir "Cannot connect" hatası veriyorsa CLI daemon'a ulaşamıyordur; teşhis adımları Cannot connect to the Docker daemon hatası yazısında. İzin hatası alıyorsanız Docker permission denied yazısına bakın. Belgeler ayrıca istemci ile daemon'ın her zaman aynı sürümde olması gerekmediğini, ancak daemon istemciden yeniyse istemcinin yeni özellikleri bilmeyeceğini, istemci daemon'dan yeniyse daemon'ın bilmediği uç noktaları isteyebileceğini hatırlatır. Komutların çıktısını şablonla süzmek için format ve filter kullanımı yazısına bakabilirsiniz.

1. Kurulum ve daemon temelleri

1. Kurulum ve daemon temelleri: Docker Ubuntu kurulumu, Debian, Fedora, RHEL ve CentOS kurulumu, Docker permission denied ve sudo olmadan çalıştırma, Docker Compose plugin kurulumu

Bu grup Docker Engine'in sunucuya kurulmasını, kullanıcı izinlerini, Compose eklentisini ve daemon'ın yapılandırılıp sorunlarının giderilmesini kapsar. Sunucuya ilk kez Docker kuruyorsanız buradan başlayın.

2. Container çalıştırma ve CLI

Kurulum tamamlandıktan sonra günlük işin çoğu container'ları çalıştırmak, izlemek ve sunucuyu düzenli tutmaktır. Bu grup, container'ların yeniden başlama davranışından kaynak limitlerine ve disk temizliğine kadar günlük operasyon konularını içerir.

3. Depolama

Container'ın yazılabilir katmanı container silinince kaybolur; kalıcı veri için volume, bind mount veya tmpfs kullanılır. Bu grup veri saklama seçeneklerini, yedeklemeyi ve Docker'ın imaj katmanlarını diskte nasıl tuttuğunu anlatır.

  • Docker volume kullanımı: volume oluşturma, listeleme, inceleme ve silme, --mount ile -v farkı, salt okunur ve anonim volume'lar.
  • Docker volume yedekleme ve taşıma: volume yedeğini alma, geri yükleme, makineler arasında taşıma ve NFS veya CIFS volume sürücüleri.
  • Docker bind mount: host dizinlerini container'a bağlama, salt okunur bağlama, bind propagation ve SELinux etiketleri.
  • tmpfs ve image mount: veriyi yalnızca bellekte tutan tmpfs bağlamaları ve bir imajın içeriğini container'a bağlama.
  • Docker storage driver ve overlay2: depolama sürücüsü seçimi, overlay2 çalışma biçimi ve btrfs, zfs, vfs sürücülerine kısa bakış.
  • containerd image store: Engine 29 ile yeni kurulumlarda varsayılan olan containerd image store ve daemon içinde containerd çalıştırma.

4. Ağ

Docker container'ları farklı ağ sürücüleriyle birbirine ve dış dünyaya bağlar. Bir VPS'te en kritik konu, hangi portların gerçekten dışarı açıldığı ve Docker'ın güvenlik duvarıyla nasıl etkileştiğidir; bu grubu production'dan önce okumanızı öneririz.

  • Docker network türleri: bridge, host, none ve diğer ağ sürücülerinin karşılaştırması ve hangisinin ne zaman kullanılacağı.
  • Docker bridge network: varsayılan bridge ile kullanıcı tanımlı bridge farkı ve container adlarıyla DNS üzerinden ad çözümleme.
  • Docker port yayınlama: -p ile port yayımlama, servisi 127.0.0.1 adresine bağlama, EXPOSE ile farkı ve gateway modları.
  • Docker, iptables ve UFW: yayımlanan portların UFW kurallarını neden atladığı, DOCKER-USER zinciri ve nftables arka ucu.
  • Docker macvlan ve ipvlan: container'lara fiziksel ağda kendi adreslerini veren macvlan ve ipvlan sürücüleri.
  • Docker IPv6 yapılandırma: daemon ve bridge ağlarında IPv6'yı etkinleştirme ve adresleme ayarları.

5. İmaj oluşturma: Dockerfile ayrıntıları

5. İmaj oluşturma: Dockerfile ayrıntıları: Docker build context ve .dockerignore, CMD ve ENTRYPOINT farkı, COPY ve ADD farkı, ARG ve ENV farkı

Temel Dockerfile talimatlarını ve multi-stage build'i Dockerfile yazma rehberi yazısında anlattık. Bu grup, o temelin üzerine tek bir konuya derinlemesine odaklanan yazılardan oluşur.

  • Docker build context ve .dockerignore: yerel, uzak ve Git build context'i, .dockerignore sözdizimi ve adlandırılmış context'ler.
  • CMD ve ENTRYPOINT farkı: iki talimatın birlikte nasıl çalıştığı ve exec form ile shell form arasındaki fark.
  • COPY ve ADD farkı: hangi talimatın ne zaman kullanılacağı ve dosyaları kopyalamadan bind mount ile kullanma.
  • ARG ve ENV farkı: build ve çalışma zamanı değişkenlerinin kapsamı, --build-arg ve önceden tanımlı ARG'ler.
  • Docker build secrets: --secret, --ssh ve RUN --mount=type=secret ile sırları imaja sızdırmadan kullanma.
  • Docker base image seçimi: base image seçimi, sürüm ve digest sabitleme, --pull ve --no-cache kullanımı.

6. BuildKit ve Buildx

Modern Docker build'leri BuildKit ile çalışır ve Buildx bu altyapının komut satırı arayüzüdür. Bu grup çok platformlu imajlar, önbellek arka uçları, Dockerfile denetimi, çıktı biçimleri ve Bake ile toplu build konularını içerir.

  • BuildKit ve Buildx: BuildKit yapılandırması, # syntax= ile frontend seçimi ve builder'ları yönetme.
  • Multi-platform build ve arm64: --platform, QEMU emülasyonu, çapraz derleme ve containerd image store ile çok mimarili imajlar.
  • Docker build cache arka uçları: önbelleğin ne zaman geçersizleştiği, optimizasyon, çöp toplama ve gha, registry, local, inline arka uçları.
  • Docker build check: docker build --check ile Dockerfile denetimi, kurallar ve check=skip ile check=error ayarları.
  • Docker build output ve exporter: --output ile build sonucunu local, tar, oci, docker veya image exporter'ına gönderme.
  • Docker Buildx Bake: docker-bake.hcl ile target, group, değişken ve matrix tanımları ve Compose dosyasından bake.

7. Compose ileri konular

Compose'un temellerini başlangıç rehberinde, çok servisli kullanımı ve production ipuçlarını Docker Compose rehberinde anlattık. Bu grup, o yazılarda yüzeysel geçilen ileri Compose özelliklerine ayrılmıştır.

8. Güvenlik, loglar, Swarm ve sürümler

Son grup, bir sunucuyu uzun süre sağlıklı tutmak için gereken konuları toplar: log yönetimi, daemon'ı root olmadan çalıştırma, daemon'a güvenli uzak erişim, birden fazla sunucuyu Swarm ile yönetme ve Engine 29'da nelerin değiştiği.

Mevcut temel yazılar ve ilgili rehberler

Bu seri, sitemizde daha önce yayımlanan temel Docker yazılarını tekrar etmez; onlara bağlantı verir. Docker serisinin dışında kalan ama Docker çalıştıran bir sunucuda işinize yarayacak rehberler de aşağıda.

Sık Sorulan Sorular

Docker'ı öğrenmeye hangi yazıyla başlamalıyım?

Docker'ın ne olduğunu bilmiyorsanız Docker ile uygulama deploy ile başlayın. Sunucunuza kurmaya hazırsanız Ubuntu kurulumu veya diğer dağıtımlar yazısıyla devam edin ve yukarıdaki "Nereden başlamalı?" sırasını izleyin.

Seri hangi Docker sürümünü esas alıyor?

Yazılar Docker Engine 29.9.3'e kadar olan resmî Docker belgelerine dayanır. Bir özelliğin Engine 29 ile geldiğini yalnızca sürüm notları öyle söylüyorsa belirtiyoruz; tüm değişikliklerin özeti Docker Engine 29 yenilikleri yazısında.

Swarm mı, Kubernetes mi öğrenmeliyim?

Bu seri Docker Engine ve Swarm üzerine kuruludur ve iki sistemi karşılaştırmaz. Swarm'ın temel kavramları Docker Swarm kurulumu yazısında, Kubernetes'in temelleri ise Kubernetes temelleri yazısında anlatılıyor; ihtiyacınıza göre ikisini birlikte okuyabilirsiniz.

Production sunucusu için mutlaka okunması gerekenler hangileri?

Docker belgelerinde güvenlik açısından öne çıkan konular şunlardır: docker grubunun root düzeyinde yetki vermesi (izinler), yayımlanan portların UFW'yi atlaması (firewall), servisleri 127.0.0.1 adresine bağlama (port yayınlama), daemon soketini koruma (uzak erişim) ve log rotasyonu (loglar).

Marka adları sahiplerine aittir. Bu yazı bağımsız bir teknik rehberdir; adı geçen kuruluşlarla bayilik veya ortaklık ilişkisi bulunduğu anlamına gelmez.

İlgili içerikler: Docker Ubuntu kurulumu · sudo olmadan Docker · Compose plugin kurulumu · Docker ile uygulama deploy · Dockerfile yazma rehberi · Compose başlangıç rehberi · Docker Compose rehberi