Docker'a Giriş Rehberi: Uygulamanızı Hızla Kapsayıcılaştırın
2/18/2026
5 min read
```html
Docker'a Giriş Rehberi: Uygulamanızı Hızla Kapsayıcılaştırın
Docker, modern yazılım geliştirme ve dağıtımında vazgeçilmez bir parça haline geldi. Kubernetes etrafındaki tartışmalar yaygın olsa da, Docker hala birçok şirket için uygulamaları oluşturmak, test etmek ve dağıtmak için tercih edilen bir araçtır. Bu makale, Docker'a hızlı bir giriş yapmanızı sağlayacak, temel kavramlarını anlamanıza yardımcı olacak ve uygulamanızı kapsayıcılaştırmanıza yardımcı olacak pratik bir örnek sunacaktır. ## Docker Temel Kavramları Pratiğe başlamadan önce, Docker'ın bazı temel kavramlarını anlamak önemlidir: * **İmaj (Image):** İmaj, uygulamanın çalışması için gereken her şeyi içeren salt okunur bir şablondur: kod, çalışma zamanı ortamı, sistem araçları, kütüphaneler ve bağımlılıklar. Sanal makine imajlarına benzer, ancak daha hafiftir. * **Konteyner (Container):** Konteyner, bir imajdan oluşturulan çalışan bir örnektir. İmajın bir çalışma zamanı örneğidir ve uygulama ile tüm bağımlılıklarını içerir. Konteynerler birbirinden yalıtılmıştır ve kendi dosya sistemlerine, süreçlerine ve ağ alanlarına sahiptir. * **Docker Hub:** Docker Hub, önceden oluşturulmuş imajları indirebileceğiniz veya kendi imajlarınızı yükleyebileceğiniz genel bir imaj deposudur. GitHub'a benzer, ancak özellikle Docker imajları için tasarlanmıştır. * **Dockerfile:** Dockerfile, bir Docker imajı oluşturmak için tüm talimatları içeren bir metin dosyasıdır. Bir Dockerfile yazarak, imaj oluşturma sürecini otomatikleştirebilirsiniz. * **Docker Compose:** Docker Compose, çoklu konteyner Docker uygulamalarını tanımlamak ve çalıştırmak için bir araçtır. Uygulamanın hizmetlerini bir YAML dosyası kullanarak yapılandırmanıza ve ardından tüm hizmetleri tek bir komutla başlatmanıza veya durdurmanıza olanak tanır. ## Docker Kurulumu Öncelikle Docker'ı kurmanız gerekiyor. Docker, çeşitli işletim sistemleri için kurulum paketleri sunar. [Docker resmi web sitesini](https://www.docker.com/get-started/) ziyaret edin ve ilgili talimatları izleyerek kurulumu gerçekleştirin. Kurulum tamamlandıktan sonra, `docker --version` komutunu çalıştırarak Docker'ın doğru şekilde kurulduğunu doğrulayabilirsiniz. ## Basit Bir Python Uygulamasını Kapsayıcılaştırma Basit bir Python uygulaması oluşturacağız ve Docker kullanarak onu kapsayıcılaştıracağız. ### 1. Python Uygulaması Oluşturma `app.py` adında bir dosya oluşturun ve aşağıdaki kodu ekleyin: ```python from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello, Docker!" if __name__ == "__main__": app.run(debug=True, host='0.0.0.0') ``` Bu basit Flask uygulaması, kök yol `/` üzerinde "Hello, Docker!" döndürecektir. ### 2. `requirements.txt` Dosyası Oluşturma Uygulama Flask kütüphanesine bağlıdır, bu nedenle bu bağımlılıkları bildirmek için bir `requirements.txt` dosyası oluşturmamız gerekir. ``` Flask ``` ### 3. Dockerfile Oluşturma `Dockerfile` adında bir dosya oluşturun ve aşağıdaki içeriği ekleyin: ```dockerfile # Resmi Python imajını temel imaj olarak kullan FROM python:3.9-slim-buster # Çalışma dizinini ayarla WORKDIR /app # requirements.txt dosyasını çalışma dizinine kopyala COPY requirements.txt . # Bağımlılıkları yükle RUN pip install --no-cache-dir -r requirements.txt ``` # Uygulama kodunu çalışma dizinine kopyala COPY app.py . # 5000 portunu açığa çıkar EXPOSE 5000 # Başlangıç komutunu tanımla CMD ["python", "app.py"] ``` **Dockerfile Açıklaması:** * `FROM python:3.9-slim-buster`: Temel imajı Python 3.9'un sadeleştirilmiş bir sürümü olarak belirtir. * `WORKDIR /app`: Kapsayıcı içindeki çalışma dizinini `/app` olarak ayarlar. * `COPY requirements.txt .`: Mevcut dizindeki `requirements.txt` dosyasını kapsayıcının `/app` dizinine kopyalar. * `RUN pip install --no-cache-dir -r requirements.txt`: Kapsayıcı içinde `pip` komutunu çalıştırarak `requirements.txt` dosyasında belirtilen bağımlılıkları yükler. `--no-cache-dir` parametresi imajın boyutunu küçültebilir. * `COPY app.py .`: Mevcut dizindeki `app.py` dosyasını kapsayıcının `/app` dizinine kopyalar. * `EXPOSE 5000`: Kapsayıcının 5000 portunu dinleyeceğini belirtir. * `CMD ["python", "app.py"]`: Kapsayıcı başlatıldığında çalıştırılacak komutu tanımlar. ### 4. Docker İmajını Oluşturma `Dockerfile`'ı içeren dizinde, Docker imajını oluşturmak için aşağıdaki komutu çalıştırın: ```bash docker build -t my-python-app . ``` * `docker build`: İmajı oluşturma komutu. * `-t my-python-app`: İmaja bir isim (`my-python-app`) atar. * `.`: Dockerfile'ın bulunduğu dizini (mevcut dizin) belirtir. Oluşturma işlemi, ağ hızına ve bağımlılıkların boyutuna bağlı olarak biraz zaman alabilir. ### 5. Docker Kapsayıcısını Çalıştırma Aşağıdaki komutu kullanarak Docker kapsayıcısını çalıştırın: ```bash docker run -d -p 5000:5000 my-python-app ``` * `docker run`: Kapsayıcıyı çalıştırma komutu. * `-d`: Kapsayıcıyı ayrık modda (arka planda) çalıştırır. * `-p 5000:5000`: Ana makinenin 5000 portunu kapsayıcının 5000 portuna eşler. * `my-python-app`: Kullanılacak imajın adını belirtir. ### 6. Uygulamayı Doğrulama Tarayıcıda `http://localhost:5000` adresini ziyaret ettiğinizde "Hello, Docker!" mesajını görmelisiniz. ### 7. Kapsayıcıyı Durdurma ve Silme Aşağıdaki komutu kullanarak kapsayıcıyı durdurun: ```bash docker stop ``` `` `docker ps` komutuyla görüntülenebilir. Aşağıdaki komutu kullanarak kapsayıcıyı silin: ```bash docker rm ``` ## Docker Compose'a Giriş Uygulamanız birden fazla hizmetten oluşuyorsa, bunları yönetmek için Docker Compose'u kullanabilirsiniz. ### 1. `docker-compose.yml` Dosyası Oluşturma `docker-compose.yml` adında bir dosya oluşturun ve aşağıdaki içeriği ekleyin: ```yaml version: "3.9" services: web: image: my-python-app ports: - "5000:5000" ``` **docker-compose.yml Açıklaması:*** `version: "3.9"`: Docker Compose dosyasının sürümünü belirtir. * `services`: Uygulamanın servislerini tanımlar. * `web`: "web" adında bir servis tanımlar. * `image: my-python-app`: Servisin kullanacağı imajı belirtir. * `ports`: Port eşlemelerini tanımlar. ### 2. Uygulamayı Başlatma `docker-compose.yml` dosyasını içeren dizinde, uygulamayı başlatmak için aşağıdaki komutu çalıştırın: ```bash docker-compose up -d ``` * `docker-compose up`: Uygulamayı başlatma komutu. * `-d`: Konteynerleri ayrık modda çalıştırır. ### 3. Uygulamayı Durdurma Aşağıdaki komutu kullanarak uygulamayı durdurun: ```bash docker-compose down ``` ## Docker Güvenlik En İyi Uygulamaları Tartışmadan da görülebileceği gibi, Docker imajlarının güvenliği önemli bir konudur. İşte bazı Docker güvenlik en iyi uygulamaları: * **Resmi İmajları Kullanın:** Mümkün olduğunca resmi olarak sağlanan imajları kullanın, bu imajlar genellikle güvenlik taramasından geçirilmiş ve bakımı yapılmıştır. * **İmaj Güvenlik Açıklarını Tarayın:** Trivy gibi araçları kullanarak imajlardaki bilinen güvenlik açıklarını tarayın ve imajları zamanında güncelleyin. * **En Az Yetki İlkesini Kullanın:** Konteynerleri root kullanıcısı olarak çalıştırmaktan kaçının. * **Konteyner Kaynaklarını Sınırlandırın:** cgroups kullanarak konteynerin CPU ve bellek kullanımını sınırlandırın. * **İmajları Düzenli Olarak Güncelleyin:** Güvenlik açıklarını gidermek için imajları güncel tutun. * **Güvenlik Tarama Araçları Kullanın:** Snyk, Clair gibi araçlar CI/CD sürecinize entegre edilebilir ve imaj güvenlik açıklarını otomatik olarak tarayabilir. ## SonuçBu makale, temel kavramları, kurulum adımlarını ve basit bir Python uygulamasının konteynerleştirme örneğini kapsayan bir Docker hızlı başlangıç kılavuzu sunmaktadır. Bu temel bilgileri öğrenerek, Docker'ı kullanarak uygulamalarınızı oluşturmaya, test etmeye ve dağıtmaya başlayabilirsiniz. Unutmayın, güvenlik çok önemlidir, her zaman Docker imajlarının güvenliğine dikkat edin ve uygulamalarınızı korumak için uygun önlemleri alın. Kubernetes büyük ölçekli konteyner orkestrasyonunda güçlü olsa da, Docker birçok senaryoda hala basit ve etkili bir çözümdür. Docker'ı öğrenerek, modern yazılım geliştirme ve dağıtım zorluklarının üstesinden daha iyi gelebilirsiniz.Published in Technology





