Arama Yap Mesaj Gönder
Biz Sizi Arayalım
+90
X

Lütfen Ülke (Bölge) Seçiniz

Türkiye (Türkçe)Türkiye (Türkçe) Almanya (German)Almanya (German) Worldwide (English)Worldwide (English)
X

Lütfen Para Birimi Seçiniz

Türk Lirası $ US Dollar Euro
X

Lütfen Ülke (Bölge) Seçiniz

Türkiye (Türkçe)Türkiye (Türkçe) Almanya (German)Almanya (German) Worldwide (English)Worldwide (English)
X

Lütfen Para Birimi Seçiniz

Türk Lirası $ US Dollar Euro

Bilgi Bankası

Anasayfa Bilgi Bankası SSH Docker Nedir? Linux’ta Container Ol...

Bize Ulaşın

Konum Halkalı merkez mahallesi fatih cd ozgur apt no 46 , Küçükçekmece , İstanbul , 34303 , TR

Docker Nedir? Linux’ta Container Oluşturma ve Yönetme

Docker Nedir?

Docker, uygulamaları ve bağımlılıklarını paketleyerek, herhangi bir ortamda tutarlı bir şekilde çalışmasını sağlayan bir platformdur. Bu paketlere container denir. Docker, geliştiricilerin, uygulamalarını geliştirmelerini, göndermelerini ve çalıştırmalarını kolaylaştırır. Sanallaştırma teknolojisine benzer, ancak daha hafiftir ve kaynakları daha verimli kullanır.

  • Temel Kavramlar: Docker imajları, container'lar, Dockerfile, Docker Hub, Docker Compose
  • Avantajları: Taşınabilirlik, izolasyon, ölçeklenebilirlik, verimlilik

Container Nedir? Sanal Makine ile Arasındaki Fark Nedir?

Container, bir uygulamanın çalışması için gerekli olan her şeyi (kod, runtime, sistem araçları, sistem kütüphaneleri, ayarlar) içeren, izole edilmiş bir ortamdır. Sanal makineler (VM'ler) ise, fiziksel bir donanımın sanallaştırılmış bir kopyasıdır ve kendi işletim sistemlerine sahiptir.

Temel Farklar:

  • Boyut ve Ağırlık: Container'lar, VM'lere göre çok daha küçüktür ve daha az kaynak tüketir. VM'ler, tam bir işletim sistemi içerdiğinden daha büyüktür ve daha fazla kaynak gerektirir.
  • Başlangıç Süresi: Container'lar saniyeler içinde başlatılabilirken, VM'lerin başlatılması daha uzun sürer.
  • Kaynak Kullanımı: Container'lar, host işletim sisteminin kernel'ini paylaşır ve kaynakları daha verimli kullanır. VM'ler ise, kendi işletim sistemlerine sahip olduklarından daha fazla kaynak tüketir.
Özellik Container Sanal Makine (VM)
Boyut Küçük (MB) Büyük (GB)
Başlangıç Süresi Hızlı (saniyeler) Yavaş (dakikalar)
Kaynak Kullanımı Düşük Yüksek
İzolasyon İşlem seviyesinde Donanım seviyesinde
İşletim Sistemi Host OS kernel'ini paylaşır Kendi OS'si var

Örnek: Bir web uygulamasını düşünelim. Container kullanarak, uygulamanın tüm bağımlılıklarını (örneğin, Python runtime, gerekli kütüphaneler) bir container içine paketleyebiliriz. Bu container, herhangi bir Docker ortamında tutarlı bir şekilde çalışacaktır. VM kullanarak ise, tam bir işletim sistemi (örneğin, Ubuntu) kurmamız ve ardından uygulamanın bağımlılıklarını bu işletim sistemi üzerinde kurmamız gerekir.

Docker İmajı Nedir? Dockerfile Nedir?

Docker İmajı, bir container oluşturmak için kullanılan salt okunur bir şablondur. İçerisinde uygulamanın kodu, runtime, sistem araçları, sistem kütüphaneleri ve ayarları bulunur. İmajlar, Docker Hub gibi bir registry'de saklanabilir ve paylaşılabilir.

Dockerfile, bir Docker imajını oluşturmak için kullanılan bir metin dosyasıdır. İçerisinde, imajın nasıl oluşturulacağını belirten talimatlar bulunur. Bu talimatlar, temel imajı belirtme, dosya kopyalama, komut çalıştırma ve ortam değişkenleri ayarlama gibi işlemleri içerir.

Dockerfile Örneği:


# Temel imaj olarak Ubuntu'yu kullan
FROM ubuntu:latest

# Gerekli paketleri yükle
RUN apt-get update && apt-get install -y python3 python3-pip

# Uygulama dosyalarını kopyala
COPY . /app

# Çalışma dizinini ayarla
WORKDIR /app

# Bağımlılıkları yükle
RUN pip3 install -r requirements.txt

# Uygulamayı çalıştır
CMD ["python3", "app.py"]

Adım Adım İmaj Oluşturma:

  1. Bir Dockerfile oluşturun.
  2. docker build komutunu kullanarak imajı oluşturun:
    docker build -t my-app .
  3. Oluşturulan imajı docker images komutu ile listeleyebilirsiniz.
  4. İmajı Docker Hub'a gönderebilirsiniz (isteğe bağlı).

Linux'ta Container Oluşturma ve Yönetme Adımları

Linux'ta container oluşturma ve yönetme adımları şunlardır:

  1. Docker Kurulumu: Linux dağıtımınıza uygun Docker kurulumunu yapın. Örneğin, Ubuntu için:
    
    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
    
  2. Docker Hizmetini Başlatma:
    sudo systemctl start docker
  3. Docker İmajını İndirme: Docker Hub'dan bir imaj indirin (örneğin, Ubuntu):
    docker pull ubuntu:latest
  4. Container Oluşturma: İndirilen imajdan bir container oluşturun:
    docker run -it ubuntu:latest /bin/bash
    • -it: İnteraktif terminal modu
    • ubuntu:latest: İmaj adı ve etiketi
    • /bin/bash: Container içinde çalıştırılacak komut
  5. Container Yönetimi: Container'ları yönetmek için aşağıdaki komutları kullanabilirsiniz:
    • docker ps: Çalışan container'ları listeler.
    • docker ps -a: Tüm container'ları listeler (çalışan ve durmuş).
    • docker stop [container_id]: Container'ı durdurur.
    • docker start [container_id]: Container'ı başlatır.
    • docker restart [container_id]: Container'ı yeniden başlatır.
    • docker rm [container_id]: Container'ı siler.
    • docker exec -it [container_id] /bin/bash: Çalışan bir container'a bağlanır.

Örnek: Bir Nginx web sunucusu çalıştırmak için:

  1. Nginx imajını indirin:
    docker pull nginx:latest
  2. Container'ı oluşturun ve 80 portunu host makinenin 80 portuna eşleyin:
    docker run -d -p 80:80 nginx:latest
    • -d: Arka planda çalıştır
    • -p 80:80: Host makinenin 80 portunu container'ın 80 portuna eşle
  3. Web tarayıcınızda http://localhost adresine giderek Nginx'in çalıştığını doğrulayın.

Docker Compose Nedir? Nasıl Kullanılır?

Docker Compose, birden fazla container'dan oluşan uygulamaları tanımlamak ve çalıştırmak için kullanılan bir araçtır. Bir YAML dosyası kullanarak, uygulamanın servislerini, ağlarını ve volume'lerini tanımlayabilirsiniz. Docker Compose, karmaşık uygulamaların kolayca yönetilmesini sağlar.

Compose Dosyası (docker-compose.yml) Örneği:


version: "3.9"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
  db:
    image: postgres:13
    environment:
      POSTGRES_USER: myuser
      POSTGRES_PASSWORD: mypassword
      POSTGRES_DB: mydb
    volumes:
      - db_data:/var/lib/postgresql/data

volumes:
  db_data:

Açıklama:

  • version: Docker Compose dosya formatının versiyonu
  • services: Uygulamanın servislerini tanımlar (örneğin, web, db)
  • image: Servis için kullanılacak Docker imajı
  • ports: Host makine ile container arasındaki port eşlemeleri
  • volumes: Host makine ile container arasındaki volume eşlemeleri
  • environment: Container içindeki ortam değişkenleri

Docker Compose Kullanımı:

  1. Bir docker-compose.yml dosyası oluşturun.
  2. Dosyanın bulunduğu dizinde aşağıdaki komutu çalıştırın:
    docker-compose up -d
    • up: Uygulamayı başlatır
    • -d: Arka planda çalıştırır
  3. Uygulamayı durdurmak için:
    docker-compose down

Docker Hub Nedir? İmaj Yayınlama ve Çekme İşlemleri

Docker Hub, Docker imajlarını saklamak ve paylaşmak için kullanılan bir bulut tabanlı registry servisidir. Geliştiriciler, Docker Hub'ı kullanarak kendi imajlarını yayınlayabilir ve başkalarının imajlarını çekebilirler. Docker Hub, hem herkese açık (public) hem de özel (private) imaj depolarını destekler.

Docker Hub Kullanımı:

  1. Bir Docker Hub hesabı oluşturun.
  2. Terminalinizde Docker Hub hesabınıza giriş yapın:
    docker login
  3. Kendi imajınızı oluşturun veya mevcut bir imajı etiketleyin:
    docker tag my-app username/my-app:v1
    • my-app: Mevcut imajın adı
    • username: Docker Hub kullanıcı adınız
    • my-app:v1: Yeni imajın adı ve etiketi
  4. İmajı Docker Hub'a gönderin:
    docker push username/my-app:v1
  5. Başka bir imajı çekmek için:
    docker pull username/other-app:latest

Docker ile İlgili Güvenlik Konuları ve En İyi Uygulamalar

Docker kullanırken güvenlik, önemli bir konudur. İşte dikkat edilmesi gereken bazı güvenlik konuları ve en iyi uygulamalar:

  • Temel İmaj Güvenliği: Güvenilir ve güncel temel imajlar kullanın. Docker Hub'da resmi ve doğrulanmış imajları tercih edin.
  • İmaj Tarama: İmajlarınızı güvenlik açıkları için düzenli olarak tarayın. Docker Hub, otomatik imaj tarama özellikleri sunar. Ayrıca, Clair gibi üçüncü taraf araçları da kullanabilirsiniz.
  • Kullanıcı Yetkilendirmesi: Container'ları root kullanıcısı olarak çalıştırmaktan kaçının. Mümkünse, özel bir kullanıcı oluşturun ve container'ı bu kullanıcı altında çalıştırın.
  • Kaynak Sınırlamaları: Container'ların kullanabileceği CPU, bellek ve disk gibi kaynakları sınırlayın. Bu, bir container'ın aşırı kaynak tüketmesini ve diğer container'ları etkilemesini önler.
  • Ağ Güvenliği: Container'lar arasındaki iletişimi sınırlandırın. Docker ağlarını kullanarak, container'ları izole edebilir ve sadece gerekli container'ların birbirleriyle iletişim kurmasına izin verebilirsiniz.
  • Gizli Bilgilerin Yönetimi: API anahtarları, şifreler ve sertifikalar gibi gizli bilgileri container'ların içine doğrudan gömmekten kaçının. Docker Secrets veya HashiCorp Vault gibi araçları kullanarak, gizli bilgileri güvenli bir şekilde yönetebilirsiniz.
  • Dockerfile Güvenliği: Dockerfile'larınızda gereksiz paketleri yüklemekten kaçının. Ayrıca, COPY komutunu kullanırken, sadece gerekli dosyaları kopyalayın.
  • Güncel Kalın: Docker ve ilgili araçları düzenli olarak güncelleyin. Güvenlik açıkları genellikle güncellemelerle giderilir.
Güvenlik Konusu En İyi Uygulama Araçlar/Teknikler
Temel İmaj Güvenliği Güvenilir ve güncel imajlar kullanın Resmi imajlar, Doğrulanmış imajlar
İmaj Tarama Güvenlik açıkları için imajları tarayın Docker Hub otomatik tarama, Clair
Kullanıcı Yetkilendirmesi Container'ları root olmayan kullanıcı olarak çalıştırın USER komutu
Kaynak Sınırlamaları CPU, bellek ve disk kullanımını sınırlayın docker run --cpus, --memory
Ağ Güvenliği Container'lar arasındaki iletişimi sınırlandırın Docker ağları
Gizli Bilgi Yönetimi Gizli bilgileri güvenli bir şekilde yönetin Docker Secrets, HashiCorp Vault

 

Aradığınız Bilgiyi Bulamıyor musunuz?

Bilgi bankasını detaylı olarak incelediniz, fakat ihtiyacınız olan bilgiyi bulamıyorsanız,

Bir Destek Talebi Oluşturun.
Faydalı Buldunuz mu?
(1192 defa görüntülendi. / 376 kişi faydalı buldu.)

Ürün ve hizmetlerimiz hakkında daha detaylı bilgi almak için hemen arayın.

Top