Kurulum Rehberleri

Docker Kurulumu ve İlk Container

Docker Desktop ve Docker Engine kurulumunu, ilk container'ı çalıştırmayı, Dockerfile yazmayı ve docker compose ile çok servisli ortam kurmayı anlatıyoruz.

Aurora YazılımEditör ekibi 6 dk okuma
Docker Kurulumu ve İlk Container
Docker kurulumu nasıl yapılır?

Docker kurulumu için Windows ve macOS'ta docker.com'dan Docker Desktop kurucusunu indirin; Windows'ta önce WSL 2'nin etkin olması gerekir. Linux'ta resmî depodan Docker Engine kurulur. Kurulumdan sonra docker run hello-world komutunu çalıştırın; karşılama mesajını görüyorsanız Docker çalışıyor demektir. Çok servisli projeler için docker compose kullanılır.

Docker Nedir, Ne İşe Yarar?

Docker, bir uygulamayı ihtiyaç duyduğu her şeyle birlikte paketleyip container (konteyner) adı verilen yalıtılmış ortamlarda çalıştıran bir platformdur. Uygulama, kütüphaneler ve ayarlar tek bir imajda toplanır; bu imaj nerede çalıştırılırsa çalıştırılsın aynı davranır.

Bunun pratik karşılığı şudur: “Benim bilgisayarımda çalışıyordu” sorunu büyük ölçüde ortadan kalkar. Geliştiricinin dizüstü bilgisayarı, test sunucusu ve canlı sunucu aynı imajı kullanır. Yeni katılan bir ekip üyesi de projeyi saatler süren kurulum yerine tek komutla ayağa kaldırır.

Container'lar sanal makinelere benzer ama çok daha hafiftir. Her biri ayrı bir işletim sistemi taşımaz, ana makinenin çekirdeğini paylaşır; bu yüzden saniyeler içinde açılır ve az kaynak tüketir.

KavramKısaca
İmaj (image)Uygulamanın salt okunur şablonu; Dockerfile'dan üretilir
Containerİmajdan başlatılan, çalışan örnek
Dockerfileİmajın nasıl oluşturulacağını tarif eden metin dosyası
VolumeContainer silinse de kalan kalıcı veri alanı
Docker HubHazır imajların bulunduğu genel kayıt
Docker ComposeBirden çok container'ı tek dosyayla yöneten araç

Kurulumdan Önce Gereksinimler

Docker Desktop, arka planda küçük bir sanal ortam çalıştırır; bu nedenle bilgisayarınızın sanallaştırma desteği açık olmalıdır. Çoğu yeni bilgisayarda varsayılan olarak açıktır; değilse BIOS/UEFI ayarlarından Intel VT-x ya da AMD-V seçeneğini etkinleştirmeniz gerekir.

Windows'ta Docker Desktop, Linux container'larını WSL 2 üzerinde çalıştırır. WSL kurulu değilse önce onu kurun; adımları WSL kurulumu rehberimizde ayrıntılı anlattık.

  • Bellek: Birkaç container aynı anda çalışacaksa en az 8 GB RAM rahat bir çalışma sağlar.
  • Disk alanı: İmajlar zamanla birikir; birkaç on GB boş alan ayırın.
  • Lisans: Docker Desktop kişisel kullanım, eğitim ve belirli ölçeğin altındaki küçük işletmeler için ücretsizdir; daha büyük kurumlar için ücretli abonelik gerekir. Güncel koşulları docker.com üzerinden kontrol edin.
powershellWSL 2 kurulumu (yönetici PowerShell)
wsl --install

# Kurulumdan sonra bilgisayarı yeniden başlatın, ardından kontrol edin
wsl --status

Windows ve macOS'ta Docker Desktop

Docker Desktop; Docker Engine, komut satırı aracı, Docker Compose ve görsel bir yönetim panelini tek pakette sunar. Kurucuyu resmî siteden indirin ve varsayılan ayarlarla kurun.

Windows'ta kurulum sırasında Use WSL 2 instead of Hyper-V seçeneğinin işaretli olduğundan emin olun. macOS'ta ise işlemcinize uygun sürümü seçin: Apple Silicon (M serisi) ya da Intel. Kurulumdan sonra uygulamayı başlatın; menü çubuğundaki ya da görev çubuğundaki balina simgesi sabitlendiğinde Docker hazırdır.

powershellWindows'ta winget ile kurulum
winget install -e --id Docker.DockerDesktop

Linux'ta Docker Engine Kurulumu

Linux'ta Docker, Docker Desktop olmadan doğrudan Docker Engine olarak çalışır; sunucular için de standart yöntem budur. En sağlıklı yol, resmî dokümantasyondaki dağıtımınıza özel depo kurulumunu izlemektir. Geliştirme makineleri için Docker'ın resmî kolaylık betiği de aynı işi tek seferde yapar.

Kurulumdan sonra kullanıcınızı docker grubuna eklerseniz her komutun başına sudo yazmanız gerekmez. Bu grup root'a yakın yetki verdiği için yalnızca güvendiğiniz kullanıcıları ekleyin.

bashResmî kolaylık betiği (geliştirme ortamı için)
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# sudo'suz kullanım için
sudo usermod -aG docker $USER
newgrp docker

# Hizmetin açılışta başlaması
sudo systemctl enable --now docker

Kurulumu Doğrulama

Hangi işletim sistemini kullanırsanız kullanın, doğrulama komutları aynıdır. hello-world imajı Docker Hub'dan indirilir, çalıştırılır ve ekrana bir açıklama yazıp kapanır. Bu çıktıyı görüyorsanız istemci, motor ve imaj indirme zinciri sorunsuz çalışıyor demektir.

bashDoğrulama komutları
docker --version
docker compose version
docker run hello-world

İlk Container'ı Çalıştırma

Gerçek bir örnekle devam edelim: hafif bir web sunucusu olan nginx'i container olarak başlatıp tarayıcıdan açalım. -d bayrağı container'ı arka planda çalıştırır, -p 8080:80 ise bilgisayarınızın 8080 portunu container'ın 80 portuna bağlar.

Komutu çalıştırdıktan sonra tarayıcıda http://localhost:8080 adresini açın; nginx karşılama sayfasını görmelisiniz. Aşağıdaki diğer komutlar container'ı izlemenizi, içine girmenizi ve temizlemenizi sağlar.

bashnginx container'ı
docker run -d -p 8080:80 --name web nginx

# Çalışan container'lar
docker ps

# Kayıtları izle
docker logs web

# Container içinde kabuk aç
docker exec -it web sh

# Durdur ve sil
docker stop web
docker rm web

# İndirilen imajlar
docker images

Kendi dosyalarınızı yayınlamak

Bir klasördeki HTML dosyalarını container'a bağlamak için bind mount kullanılır. Aşağıdaki komut, bulunduğunuz klasörü nginx'in yayın klasörüne salt okunur bağlar; dosyayı düzenleyip sayfayı yenilediğinizde değişikliği hemen görürsünüz.

bash
docker run -d -p 8080:80 -v "$(pwd)":/usr/share/nginx/html:ro --name site nginx

Kendi imajınızı oluşturmak

Bir Node.js uygulamasını imaja dönüştürmek için proje köküne Dockerfile adlı bir dosya ekleyin. Önce package dosyalarını kopyalayıp bağımlılıkları kurmak, kod değiştiğinde bu katmanın yeniden oluşturulmasını önler ve derlemeyi hızlandırır.

dockerfileDockerfile
FROM node:lts-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
bashDerleme ve çalıştırma
docker build -t uygulamam .
docker run -d -p 3000:3000 uygulamam

Docker Compose ile Çoklu Servis

Gerçek projeler genellikle birden çok parçadan oluşur: bir web sunucusu, bir veritabanı, belki bir önbellek. Her birini ayrı docker run komutlarıyla başlatmak yerine Docker Compose ile hepsini tek bir compose.yaml dosyasında tanımlarsınız.

Aşağıdaki örnek bir nginx web sunucusu ile bir MariaDB veritabanını birlikte başlatır. Veritabanı dosyaları adlandırılmış bir volume içinde tutulduğu için container silinse bile veriler korunur. Eski örneklerde görülen version satırı artık gerekli değildir.

yamlcompose.yaml
services:
  web:
    image: nginx:alpine
    ports:
      - "8080:80"
    volumes:
      - ./site:/usr/share/nginx/html:ro
    depends_on:
      - db

  db:
    image: mariadb:lts
    environment:
      MARIADB_ROOT_PASSWORD: degistirin
      MARIADB_DATABASE: uygulama
    volumes:
      - db-veri:/var/lib/mysql

volumes:
  db-veri:
bashCompose komutları
docker compose up -d
docker compose ps
docker compose logs -f
docker compose down

# Volume'larla birlikte sil (veriler gider)
docker compose down -v

Sık Hatalar ve Çözümleri

Docker kurulumunda karşılaşılan sorunlar çoğunlukla sanallaştırma, izinler ve port çakışmalarıyla ilgilidir. İmajlar ve durmuş container'lar zamanla disk dolduruyorsa docker system prune kullanılmayan kaynakları temizler; komut silmeden önce onay ister.

  • WSL 2 / sanallaştırma hatası: BIOS'ta sanallaştırmayı açın, wsl --update ile WSL'i güncelleyin ve bilgisayarı yeniden başlatın.
  • port is already allocated: Seçtiğiniz port başka bir uygulama tarafından kullanılıyor. -p 8081:80 gibi farklı bir port seçin ya da çakışan uygulamayı kapatın.
  • permission denied ... docker.sock: Linux'ta kullanıcınız docker grubunda değildir; usermod komutundan sonra oturumu kapatıp açın.
  • Cannot connect to the Docker daemon: Docker Desktop kapalıdır ya da Linux'ta hizmet çalışmıyordur; sudo systemctl start docker ile başlatın.
  • Mac'te imaj mimarisi uyarısı: Bazı imajlar yalnızca x86 için yayınlanır. Mümkünse ARM destekli bir etiket seçin.

Docker Web Projelerine Ne Kazandırır?

Docker, bir web projesinin geliştirme, test ve canlı ortamlarının aynı olmasını sağlar. PHP ve veritabanı içeren bir projeyi XAMPP kurulumu gibi tek makinelik paketler yerine container'larla çalıştırmak, sürüm farklılıklarından doğan sürprizleri azaltır. Container içinde PHP bağımlılıklarını yönetmek için Composer kurulumu rehberimize de bakabilirsiniz.

Tekrarlanabilir ortamlar, yapılan hız ve performans iyileştirmelerinin canlıda da aynı sonucu vermesini kolaylaştırır. Birden çok sistemin birlikte çalıştığı entegre çözümler ve büyüyen bir e-ticaret altyapısı için bu tutarlılık ayrıca önemlidir.

Diğer konteyner ve sunucu içerikleri için docker etiketi sayfamıza göz atabilirsiniz.

Sık Sorulan Sorular

01Docker ile sanal makine arasındaki fark nedir?

Sanal makine kendi işletim sistemini taşır, gigabaytlarca yer kaplar ve dakikalar içinde açılır. Container ise ana makinenin çekirdeğini paylaşır, megabaytlar düzeyinde kalabilir ve saniyeler içinde başlar; buna karşılık yalıtımı sanal makine kadar güçlü değildir.

02Docker Desktop olmadan Windows'ta Docker kullanılabilir mi?

Evet. WSL 2 içindeki bir Linux dağıtımına doğrudan Docker Engine kurabilirsiniz. Bu yöntem lisans açısından esneklik sağlar ama görsel panel ve otomatik güncellemeler gibi kolaylıklardan vazgeçmiş olursunuz.

03Container silinince verilerim kaybolur mu?

Container içine yazılan veriler, container silindiğinde kaybolur. Kalıcı olması gereken veriyi, örneğin veritabanı dosyalarını, volume ya da bind mount ile container dışına bağlayın; docker compose down -v komutunun volume'ları da sildiğini unutmayın.

04Docker canlı sunucuda kullanılır mı?

Evet, pek çok uygulama canlıda container olarak çalışır. Ancak canlı ortamda yedekleme, güncelleme, kayıt izleme ve güvenlik ayarları ayrıca planlanmalıdır; geliştirme makinesindeki kurulumun birebir kopyası yeterli değildir.

Docker'ı kurup ilk container'ı çalıştırdığınızda, projelerinizi her makinede aynı şekilde ayağa kaldırabileceğiniz tekrarlanabilir bir düzene geçmiş olursunuz. İşletmeniz için bu düzende geliştirilen ve bakımı kolay, size özel bir yazılım istiyorsanız Aurora Yazılım'ın özel yazılım çözümlerini inceleyin ya da bizimle iletişime geçin.