Ana içeriğe geç
Kategoriye Dön

Docker Temel Kullanım Rehberi: Kurulum ve Komutlar

Docker kurulumu, temel komutlar (run, stop, rm, ps), image yönetimi, volume ve network temelleri. Linux sunucuda Docker ile konteyner çalıştırma adım adım rehber.

Okuma süresi: 14 dk Sunucu Yönetimi
dockerkonteynercontainerimagevolumelinuxdevopsdocker hub

İçindekiler

Docker Temel Kullanım Rehberi: Kurulum ve Komutlar

Docker, uygulamaları izole konteynerler içinde çalıştırmanızı sağlayan açık kaynaklı bir platformdur. Geliştirme ortamından üretime kadar tutarlı bir çalışma ortamı sunar. Bu rehberde Docker kurulumunu, temel komutları ve pratik kullanım senaryolarını ele alacağız.

Docker Nedir?

Docker, uygulamaları ve bağımlılıklarını bir araya getirerek taşınabilir konteynerler oluşturur. Sanal makinelerden farklı olarak:

  • Host işletim sisteminin çekirdeğini paylaşır (daha hafif)
  • Saniyeler içinde başlar ve durur
  • Kaynak kullanımı çok daha düşüktür
  • "Bende çalışıyor" sorununu ortadan kaldırır

Docker, modern yazılım geliştirme ve dağıtımının temel taşıdır. REXE sunucularında Docker ile uygulamalarınızı kolayca deploy edebilirsiniz.

Docker Kurulumu

Debian/Ubuntu

hljs bash
# Eski sürümleri kaldır
sudo apt remove docker docker-engine docker.io containerd runc

# Gerekli paketleri kur
sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release -y

# Docker GPG anahtarını ekle
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# Docker deposunu ekle
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Docker'ı kur
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y

# Servisi başlat ve etkinleştir
sudo systemctl start docker
sudo systemctl enable docker

RHEL/CentOS/AlmaLinux

hljs bash
# Docker deposunu ekle
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# Docker'ı kur
sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y

# Servisi başlat
sudo systemctl start docker
sudo systemctl enable docker

Kurulum Doğrulama

hljs bash
# Docker sürümünü kontrol et
docker --version

# Test konteyneri çalıştır
sudo docker run hello-world

# Sudo olmadan Docker kullanmak için
sudo usermod -aG docker $USER
newgrp docker

Temel Docker Komutları

Konteyner Çalıştırma

hljs bash
# Basit konteyner çalıştır
docker run nginx

# Arka planda (detached) çalıştır
docker run -d nginx

# Port yönlendirme ile çalıştır
docker run -d -p 8080:80 nginx

# İsim vererek çalıştır
docker run -d --name web-server -p 8080:80 nginx

# Ortam değişkeni ile çalıştır
docker run -d -e MYSQL_ROOT_PASSWORD=sifre --name mysql mysql:8.0

# Volume bağlayarak çalıştır
docker run -d -v /host/dizin:/container/dizin nginx

# Otomatik yeniden başlatma
docker run -d --restart unless-stopped nginx

# İnteraktif terminal
docker run -it ubuntu bash

Konteyner Yönetimi

hljs bash
# Çalışan konteynerleri listele
docker ps

# Tüm konteynerleri listele (durmuş dahil)
docker ps -a

# Konteyneri durdur
docker stop konteyner_adi

# Konteyneri başlat
docker start konteyner_adi

# Konteyneri yeniden başlat
docker restart konteyner_adi

# Konteyneri sil (önce durdurulmalı)
docker rm konteyner_adi

# Çalışan konteyneri zorla sil
docker rm -f konteyner_adi

# Tüm durmuş konteynerleri sil
docker container prune

Konteyner İzleme

hljs bash
# Konteyner loglarını görüntüle
docker logs konteyner_adi

# Canlı log takibi
docker logs -f konteyner_adi

# Son 100 satır log
docker logs --tail 100 konteyner_adi

# Konteyner kaynak kullanımı
docker stats

# Konteyner detayları
docker inspect konteyner_adi

# Konteynere bağlan
docker exec -it konteyner_adi bash

# Konteynerde komut çalıştır
docker exec konteyner_adi ls /var/www

Image Yönetimi

hljs bash
# Image indir
docker pull nginx
docker pull nginx:1.25
docker pull ubuntu:22.04

# Mevcut image'ları listele
docker images

# Image sil
docker rmi nginx

# Kullanılmayan image'ları temizle
docker image prune

# Tüm kullanılmayan kaynakları temizle
docker system prune -a

# Image boyutunu görüntüle
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"

Dockerfile ile Image Oluşturma

hljs dockerfile
# Örnek Dockerfile
FROM node:18-alpine

WORKDIR /app

COPY package*.json ./
RUN npm install --production

COPY . .

EXPOSE 3000

CMD ["node", "server.js"]
hljs bash
# Image oluştur
docker build -t uygulamam:1.0 .

# Image'ı Docker Hub'a gönder
docker tag uygulamam:1.0 kullanici/uygulamam:1.0
docker push kullanici/uygulamam:1.0

Volume Yönetimi

Volume'lar, konteyner silinse bile verilerin kalıcı olmasını sağlar.

hljs bash
# Volume oluştur
docker volume create veritabani-verisi

# Volume'ları listele
docker volume ls

# Volume'u konteynere bağla
docker run -d -v veritabani-verisi:/var/lib/mysql mysql:8.0

# Bind mount (host dizini)
docker run -d -v /root/data:/app/data nginx

# Volume sil
docker volume rm veritabani-verisi

# Kullanılmayan volume'ları temizle
docker volume prune

# Volume detayları
docker volume inspect veritabani-verisi

Network Temelleri

hljs bash
# Mevcut ağları listele
docker network ls

# Özel ağ oluştur
docker network create uygulama-agi

# Konteyneri ağa bağla
docker run -d --network uygulama-agi --name web nginx
docker run -d --network uygulama-agi --name db mysql:8.0

# Aynı ağdaki konteynerler birbirini isimle bulabilir
# web konteyneri içinden: ping db

# Ağ detayları
docker network inspect uygulama-agi

# Ağı sil
docker network rm uygulama-agi

Pratik Örnekler

Nginx Web Sunucusu

hljs bash
docker run -d \
  --name nginx-web \
  -p 80:80 \
  -v /var/www/html:/usr/share/nginx/html:ro \
  --restart unless-stopped \
  nginx:alpine

MySQL Veritabanı

hljs bash
docker run -d \
  --name mysql-db \
  -e MYSQL_ROOT_PASSWORD=guclu_sifre \
  -e MYSQL_DATABASE=uygulamam \
  -v mysql-data:/var/lib/mysql \
  -p 3306:3306 \
  --restart unless-stopped \
  mysql:8.0

WordPress + MySQL

hljs bash
# Önce ağ oluştur
docker network create wordpress-net

# MySQL başlat
docker run -d \
  --name wordpress-db \
  --network wordpress-net \
  -e MYSQL_ROOT_PASSWORD=root_sifre \
  -e MYSQL_DATABASE=wordpress \
  -e MYSQL_USER=wp_user \
  -e MYSQL_PASSWORD=wp_sifre \
  -v wp-db-data:/var/lib/mysql \
  mysql:8.0

# WordPress başlat
docker run -d \
  --name wordpress \
  --network wordpress-net \
  -e WORDPRESS_DB_HOST=wordpress-db \
  -e WORDPRESS_DB_USER=wp_user \
  -e WORDPRESS_DB_PASSWORD=wp_sifre \
  -e WORDPRESS_DB_NAME=wordpress \
  -p 8080:80 \
  wordpress:latest

Birden fazla konteyner yönetmek için Docker Compose kullanın. docker-compose.yml dosyası ile tüm servisleri tek komutla başlatabilirsiniz.

Sonuç

Docker, modern uygulama dağıtımının vazgeçilmez aracıdır. Temel komutları öğrendikten sonra Docker Compose ile çoklu servis yönetimine geçebilirsiniz. REXE sunucularında Docker kullanarak uygulamalarınızı izole, güvenli ve taşınabilir şekilde çalıştırabilirsiniz.