Docker Nedir? Konteynerler Teknik Olmayanlar İçin Açıklandı
Docker, bir uygulamayı çalışması için gereken her şeyle — doğru dil sürümü, kütüphaneler, sistem araçları ve ayarlar — birlikte konteyner adı verilen standart bir birimde paketleyen bir araçtır. Konteyner, bir geliştiricinin dizüstü bilgisayarında, bir test sunucusunda ya da bulut barındırmada aynı şekilde çalışır; böylece klasik "benim bilgisayarımda çalışıyordu" sorunu ortadan kalkar. Bir konteyneri nasıl oluşturacağını tarif eden kısa metin dosyasına Dockerfile denir.
AI ile geliştirirken Docker neden önemli?
Uygulamanızın bir arka ucu varsa — Python, Node, C# ya da Java ile yazılmış bir API — doğru yazılımların tam olarak kurulu olduğu bir yerde çalışması gerekir. Docker bunu tekrarlanabilir kılmanın en yaygın yoludur.
- Arka uçları dağıtmak. Mythex dahil birçok barındırma hizmeti, arka uçları bir Dockerfile'dan konteyner oluşturarak dağıtır. Mythex'te "bir C# Web API" ya da "bir Java arka ucu" istediğinizde uygulamanın yanında bir Dockerfile alırsınız ve Yayınla, image'ı oluşturup dağıtır (API arka uçları).
- Bir platformdan ayrılmak. AI ile geliştirilmiş bir uygulamayı dışa aktarırsanız, bir Dockerfile onu başka bir barındırma hizmetinde çalıştırmayı çok daha kolay yapar. Bkz. AI ile geliştirilmiş bir uygulamayı nasıl dışa aktarıp kendiniz barındırırsınız.
- Geliştiricilerle çalışmak. Projenize katılan bir geliştirici, bir gün boyunca bir şeyler kurmak yerine tüm uygulamayı bir iki komutla başlatabilir.
Günlük hayattan bir benzetme: nakliye konteynerleri
Standart nakliye konteynerlerinden önce yükler parça parça — çuvallar, variller, sandıklar — taşınır ve her liman bunu farklı yönetirdi. Standart çelik konteyner bunu değiştirdi: bir kez paketleyin, herhangi bir gemi, vinç, tren ya da kamyon içinde ne olduğunu düşünmeden taşıyabilir.
Docker yazılım için aynı şeyi yapar:
- Dockerfile paketleme listesi ve talimatlardır.
- Image mühürlenmiş, paketlenmiş konteynerdir.
- Çalışan bir konteyner, o kutunun bir gemide — burada bir sunucuda — iş görmeye başlamış halidir.
- Docker Engine vinç ve gemidir: herhangi bir konteyneri çalıştırmayı bilen, bir sunucudaki yazılımdır.
Docker nasıl çalışır?
| Parça | Nedir |
|---|---|
| Dockerfile | Image'ı oluşturmak için adım adım talimatlar içeren metin dosyası. |
| Image | Salt okunur bir paket: işletim sistemi temelleri, çalışma zamanı, kütüphaneler ve sizin kodunuz. |
| Konteyner | Bir image'ın çalışan örneği; aynı makinedeki diğer uygulamalardan izole edilmiştir. |
| Kayıt defteri (registry) | Image'ları saklamak ve paylaşmak için bir yer; Docker Hub ya da bir bulut sağlayıcısının kayıt defteri gibi. |
| Docker Engine | Image'ları oluşturan ve konteynerleri çalıştıran arka plan servisi. Ücretsiz ve açık kaynaktır. |
| Docker Desktop | Motoru grafik arayüzle birlikte sunan, Mac, Windows ve Linux için bir uygulama. |
Konteynerler ve sanal makineler: sanal makine, kendi işletim sistemiyle ayrı bir bilgisayarmış gibi davranır; bu yüzden ağırdır ve başlaması yavaştır. Konteyner ise ana makinenin işletim sistemi çekirdeğini paylaşır ve yalnızca uygulamayı ve dosyalarını izole eder; bu yüzden genellikle saniyeler içinde başlar ve çok daha az bellek kullanır. Aynı sunucuda birçok konteyner yan yana çalışabilir.
Çalışan bir örnek: küçük bir Python API'si
Diyelim ki AI oluşturucunuz bir rezervasyon uygulaması için bir Python FastAPI arka ucu oluşturdu. Dockerfile şöyle görünebilir:
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
Satır satır:
| Satır | Ne yapar |
|---|---|
FROM python:3.12-slim | Python 3.12'nin zaten kurulu olduğu resmi bir image ile başlar. |
WORKDIR /app | Konteynerin içindeki /app klasöründe çalışır. |
COPY requirements.txt . ve RUN pip install ... | Kütüphanelerin listesini kopyalar ve kurar. |
COPY . . | Uygulamanın kendi kodunu kopyalar. |
EXPOSE 8000 | Uygulamanın 8000 numaralı portu dinlediğini belirtir. |
CMD [...] | Konteyner çalıştığında web sunucusunu başlatan komut. |
Sade bir dille: "Python 3.12 ile başla. requirements.txt içinde listelenen kütüphaneleri kur. Kodu kopyala. Web sunucusunu 8000 portunda başlat."
Bir geliştirici (ya da bir barındırma platformu) ardından iki komut çalıştırır:
docker build -t booking-api .
docker run -p 8000:8000 booking-api
İlki image'ı oluşturur ve booking-api adını verir. İkincisi bir konteyner başlatır ve makinedeki 8000 portunu konteynerin içindeki 8000 portuna bağlar. API artık çalışıyor — Docker kurulu herhangi bir sunucuda da aynı şekilde çalışacak.
Dikkat edin, image'ın içinde olmayanlar: parolalar ve API anahtarları. Bunlar konteyner başlarken ortam değişkenleri olarak verilir; böylece aynı image test ve üretimde farklı ayarlarla çalışabilir.
Temel terimler
| Terim | Anlamı |
|---|---|
| Konteyner | Bir uygulamanın ve bağımlılıklarının izole, çalışan paketi. |
| Image | Bir konteynerin başlatıldığı şablon. |
| Temel image (base image) | Dockerfile'ın FROM satırındaki başlangıç noktası; örneğin python:3.12-slim ya da node:22. |
| Katman (layer) | Dockerfile'ın her adımı önbelleğe alınmış bir katman ekler; bu da yeniden oluşturmayı hızlandırır. |
| Port eşleme | Ana makinedeki bir portu konteynerin içindeki bir porta bağlamak. |
| Birim (volume) | Bir konteyner değiştirildiğinde de kalan depolama. Konteynerlerin kendisi tek kullanımlıktır. |
| Docker Compose | Birlikte çalışan birden fazla konteyneri — örneğin bir API ile bir veritabanını — tanımlayan dosya. |
| Kubernetes | Çok sayıda sunucudaki çok sayıda konteyneri çalıştırmak için bir sistem. Çoğu küçük uygulamanın buna ihtiyacı yoktur. |
Yaygın yanlış anlamalar
- "Docker bir sanal makinedir." Daha hafiftir: konteynerler ana makinenin çekirdeğini paylaşır.
- "Bir konteynerin içinde saklanan veri güvendedir." Konteynerler atılıp değiştirilmek üzere tasarlanmıştır. Kalıcı olması gereken her şey — kullanıcı verisi, yüklemeler — bir veritabanında, dosya depolamada ya da bir birimde (volume) tutulmalıdır.
- "Dockerfile'a sır koymak özel olduğu için sorun değildir." Image'lar paylaşılır ve kayıt defterlerine gönderilir. Sırları çalışma anında verin.
- "Docker bir uygulamayı güvenli yapar." İzolasyon yardımcı olur, ama eski yazılım ve zayıf ayarlarla çalışan bir konteyner hâlâ savunmasızdır.
- "Her uygulamanın Docker'a ihtiyacı vardır." Statik bir site ya da basit bir ön yüz genellikle hiç konteyner kullanmadan, düz dosyalar olarak barındırılır.
- "Docker Desktop herkes için ücretsizdir." Motor ücretsizdir; Docker Desktop ise Docker'ın koşullarına göre daha büyük şirketler için ücretli abonelik gerektirir.
AI oluşturucunuza ne sormalısınız?
- "Bu uygulamanın bir Dockerfile'a ihtiyacı var mı? Varsa her satırı sade bir dille açıkla."
- "Küçük, resmi bir temel image kullan ve dil sürümünü sabitle."
- "Sırları image'ın dışında tut. Çalışma anında ortam değişkenlerinden oku."
- "Yüklemelerin ve verilerin konteynerin içinde değil, veritabanında ya da dosya depolamada tutulduğundan emin ol."
- "Bir geliştiricinin ön yüzü, API'yi ve veritabanını tek bir komutla yerelde çalıştırabilmesi için bir Docker Compose dosyası ekle."
- "Barındırma hizmetinin API'nin ayakta olup olmadığını anlayabilmesi için bir sağlık kontrolü uç noktası ekle."
Mythex'te Docker
Mythex'i kullanmak için Docker kurmanız ya da çalıştırmanız gerekmez. Projeniz özel bir bulut sandbox'ında çalışır; C#, Java ya da özel bir Node ya da Python servisi gibi bir konteyner gerektiren bir arka uç istediğinizde Mythex uygulamayı ve bir Dockerfile'ı yazar, sandbox'ta önizler ve yayınladığınızda dağıtır — kurulacak bir barındırma yoktur (teknoloji nasıl seçilir). Pro'da projeyi dışa aktarabilir ya da GitHub'a senkronize edebilir ve Dockerfile'ı yanınızda götürebilirsiniz. Arka uç ve ön yüzün birlikte nasıl çalıştığı için ön yüz ile arka uç yazısına bakın.
Sorular
Docker basitçe ne demek?
Docker, bir uygulamayı çalışması için gereken her şeyle — dil çalışma zamanı, kütüphaneler ve ayarlar — birlikte standart bir birim olan konteynerde paketleyen bir araçtır. Konteyner, bir dizüstü bilgisayarda, bir test sunucusunda ya da bulut barındırmada aynı şekilde çalışır.
Docker image ile konteyner arasındaki fark nedir?
Image, paketlenmiş, salt okunur şablondur: uygulama ve bağımlılıkları, bir Dockerfile'dan oluşturulur. Konteyner ise o image'ın çalışan bir kopyasıdır. Tek bir image'dan birçok konteyner başlatabilirsiniz.
Docker bir sanal makine mi?
Hayır. Sanal makine, kendi işletim sistemiyle tam bir bilgisayarı taklit eder. Konteynerler ana makinenin işletim sistemi çekirdeğini paylaşır ve yalnızca uygulamayı izole eder; bu yüzden daha hızlı başlarlar ve daha az bellek kullanırlar.
Docker ücretsiz mi?
Konteynerleri çalıştıran çekirdek olan Docker Engine ücretsiz ve açık kaynaktır. Docker'ın Eylül 2026 itibarıyla koşullarına göre Docker Desktop, ticari olmayan açık kaynak projeler ile 250'den az çalışanı ve yıllık geliri 10 milyon dolardan az olan şirketler için ücretsizdir; daha büyük şirketler ücretli abonelik gerektirir.
AI ile uygulama geliştirmek için Docker öğrenmem gerekir mi?
Genellikle hayır. Birçok AI oluşturucu konteynerleri sizin yerinize halleder. Bir arka ucun nasıl paketlendiğini anlamak ve uygulamayı dışa aktarırsanız başka yerde çalıştırabilmek için Dockerfile'ın ne olduğunu bilmek yardımcı olur.