logo
eng-flag

Docker Notları ve İpuçları

İçindekiler

  1. Docker Kurulumu
  2. Temel Docker Komutları
  3. Docker İmajlarıyla Çalışma
  4. Docker Konteynerleri Yönetimi
  5. Docker Ağları
  6. Docker Volumeleri
  7. Dockerfile Temelleri
  8. Docker Compose
  9. Docker Swarm
  10. Docker Güvenlik En İyi Uygulamaları
  11. 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

  1. Resmi web sitesinden Docker Desktop for Mac'i indirin
  2. İndirilen .dmg dosyasına çift tıklayın ve Docker'ı Uygulamalar klasörüne sürükleyin

Windows'ta Docker Kurulumu

  1. Resmi web sitesinden Docker Desktop for Windows'u indirin
  2. Yükleyiciyi çalıştırmak için çift tıklayın
  3. 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

# Resmi Python çalışma zamanını temel imaj olarak kullan
FROM python:3.9-slim

# Konteynerdeki çalışma dizinini ayarla
WORKDIR /app

# Mevcut dizin içeriğini konteynerdeki /app dizinine kopyala
COPY . /app

# requirements.txt'de belirtilen gerekli paketleri yükle
RUN pip install --no-cache-dir -r requirements.txt

# 80 portunu dış dünyaya aç
EXPOSE 80

# Çevre değişkeni tanımla
ENV AD Dünya

# Konteyner başlatıldığında app.py'yi çalıştır
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ı

  1. Resmi temel imajları kullanın
  2. İmajlarınızı düzenli olarak güncelleyin ve yamalayın
  3. İmajları güvenlik açıkları için tarayın
  4. İmaj boyutunu azaltmak için çok aşamalı yapılar kullanın
  5. Konteynerleri root olarak çalıştırmayın
  6. Hassas veriler için gizli yönetimi kullanın
  7. Konteyner kaynaklarını sınırlandırın
  8. Mümkün olduğunda salt okunur dosya sistemleri kullanın
  9. Ağ segmentasyonu uygulayın
  10. İ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

2024 © Tüm hakları saklıdır - buraxta.com