Docker Notları ve İpuçları
İçindekiler
Docker Kurulumu
Temel Docker Komutları
Docker İmajlarıyla Çalışma
Docker Konteynerleri Yönetimi
Docker Ağları
Docker Volumeleri
Dockerfile Temelleri
Docker Compose
Docker Swarm
Docker Güvenlik En İyi Uygulamaları
Docker Sorun Giderme
Docker Kurulumu
Ubuntu'da Docker Kurulumu
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
macOS'ta Docker Kurulumu
Resmi web sitesinden Docker Desktop for Mac'i indirin
İndirilen .dmg dosyasına çift tıklayın ve Docker'ı Uygulamalar klasörüne sürükleyin
Windows'ta Docker Kurulumu
Resmi web sitesinden Docker Desktop for Windows'u indirin
Yükleyiciyi çalıştırmak için çift tıklayın
Kurulum sihirbazını takip edin
Temel Docker Komutları
Docker sürümünü kontrol et
docker --version
Docker bilgilerini görüntüle
docker info
Docker CLI komutlarını listele
docker
Belirli bir komut hakkında yardım al
docker < komut> --help
Docker İmajlarıyla Çalışma
Docker imajlarını listele
docker images
Docker Hub'dan bir imaj çek
docker pull < imaj_adı> :< etiket>
Örnek:
docker pull nginx:latest
Dockerfile'dan bir imaj oluştur
docker build -t < imaj_adı> :< etiket> < dockerfile_yolu>
Örnek:
docker build -t uygulamam:1.0 .
Bir imajı sil
docker rmi < imaj_id_veya_adı>
Kullanılmayan tüm imajları sil
docker image prune -a
Docker Konteynerleri Yönetimi
Bir konteyner çalıştır
docker run < seçenekler> < imaj_adı> :< etiket>
Örnek:
docker run -d -p 80 :80 --name nginx_konteynerim nginx:latest
Çalışan konteynerleri listele
docker ps
Tüm konteynerleri listele (durmuş olanlar dahil)
docker ps -a
Çalışan bir konteyneri durdur
docker stop < konteyner_id_veya_adı>
Durmuş bir konteyneri başlat
docker start < konteyner_id_veya_adı>
Bir konteyneri sil
docker rm < konteyner_id_veya_adı>
Tüm durmuş konteynerleri sil
docker container prune
Çalışan bir konteynerde komut çalıştır
docker exec -it < konteyner_id_veya_adı> < komut>
Örnek:
docker exec -it nginx_konteynerim /bin/bash
Konteyner loglarını görüntüle
docker logs < konteyner_id_veya_adı>
Docker Ağları
Ağları listele
docker network ls
Bir ağ oluştur
docker network create < ağ_adı>
Bir konteyneri bir ağa bağla
docker network connect < ağ_adı> < konteyner_id_veya_adı>
Bir konteyneri bir ağdan ayır
docker network disconnect < ağ_adı> < konteyner_id_veya_adı>
Bir ağı sil
docker network rm < ağ_adı>
Docker Volumeleri
Volumeleri listele
docker volume ls
Bir volume oluştur
docker volume create < volume_adı>
Bir volume'u sil
docker volume rm < volume_adı>
Bir volume'u bir konteynere bağla
docker run -v < volume_adı> :< konteyner_yolu> < imaj_adı>
Örnek:
docker run -d -v verilerim:/app/veri uygulamam:latest
Dockerfile Temelleri
Örnek Dockerfile
FROM python:3.9-slim
WORKDIR /app
COPY . /app
RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 80
ENV AD Dünya
CMD ["python" , "app.py" ]
Yaygın Dockerfile talimatları
FROM: Temel imajı ayarlar
WORKDIR: Çalışma dizinini ayarlar
COPY: Dosyaları ana makineden konteynere kopyalar
ADD: Dosyaları kopyalar ve ayrıca URL'lerden indirebilir ve arşivleri çıkarabilir
RUN: Komutları yeni bir katmanda çalıştırır
ENV: Çevre değişkenlerini ayarlar
EXPOSE: Docker'a konteynerin belirtilen portları dinlediğini bildirir
CMD: Çalışan bir konteyner için varsayılanları sağlar
ENTRYPOINT: Bir konteyneri çalıştırılabilir olarak yapılandırır
Docker Compose
Örnek docker-compose.yml
version : '3'
services :
web :
build : .
ports :
- "5000:5000"
redis :
image : "redis:alpine"
docker-compose.yml'de tanımlanan servisleri başlat
docker-compose up
docker-compose.yml'de tanımlanan servisleri durdur
docker-compose down
Servislerin loglarını görüntüle
docker-compose logs
Bir servisi ölçeklendir
docker-compose up -d --scale < servis_adı>= < örnek_sayısı>
Örnek:
docker-compose up -d --scale web = 3
Docker Swarm
Bir swarm başlat
docker swarm init
Bir swarm'a işçi olarak katıl
docker swarm join --token < işçi_tokeni> < yönetici_ip> :< yönetici_port>
Swarm'daki düğümleri listele
docker node ls
Swarm'a bir yığın dağıt
docker stack deploy -c < docker-compose-dosyası> < yığın_adı>
Yığınları listele
docker stack ls
Bir yığını kaldır
docker stack rm < yığın_adı>
Docker Güvenlik En İyi Uygulamaları
Resmi temel imajları kullanın
İmajlarınızı düzenli olarak güncelleyin ve yamalayın
İmajları güvenlik açıkları için tarayın
İmaj boyutunu azaltmak için çok aşamalı yapılar kullanın
Konteynerleri root olarak çalıştırmayın
Hassas veriler için gizli yönetimi kullanın
Konteyner kaynaklarını sınırlandırın
Mümkün olduğunda salt okunur dosya sistemleri kullanın
Ağ segmentasyonu uygulayın
İmaj imzalama ve doğrulama için Docker Content Trust'ı etkinleştirin
Docker Sorun Giderme
Konteyner kaynak kullanımını görüntüle
docker stats
Konteyner detaylarını incele
docker inspect < konteyner_id_veya_adı>
Docker olaylarını görüntüle
docker events
Docker disk kullanımını kontrol et
docker system df
Docker sistemini temizle
docker system prune
Konteyner işlemlerini görüntüle
docker top < konteyner_id_veya_adı>
Çalışan bir konteynerde hata ayıkla
docker exec -it < konteyner_id_veya_adı> /bin/sh