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.
İç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
# 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
# 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
# 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
# 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
# Ç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
# 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
# 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
# Örnek Dockerfile
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install --production
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]
# 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.
# 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
# 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
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ı
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
# Ö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.
İlgili Makaleler
VDS Sunucuya SSH ile Bağlanma Rehberi (PuTTY & Terminal)
Linux VDS sunucunuza SSH ile bağlanma adımları: PuTTY, Terminal, anahtar tabanlı kimlik doğrulama, Path Panel firewall kuralı ve güvenlik ipuçları.
Windows VDS'e RDP ile Bağlanma ve Güvenlik Rehberi
Windows Server VDS sunucunuza Uzak Masaüstü (RDP) ile bağlanma adımları, NLA güvenlik ayarları, Path Panel firewall kuralı ve sorun giderme rehberi.
VDS Sunucu İşletim Sistemi Değiştirme Rehberi (Reinstall)
REXE panel üzerinden VDS sunucunuzun işletim sistemini değiştirme adımları, yedekleme önerileri, desteklenen Linux ve Windows Server sürümleri.