# Docker mühendisi — 2020'den beri

> Docker ile uygulamayı container olarak paketleme, geliştirme ortamını dağıtımla eşleme ve Docker'ı Kubernetes ve CI/CD hattıyla birlikte kullanma işlerim.

- Öne çıkanlar: 6 yıl
- Deneyim: 2020'den bu yana
- Güncelleme: 2026-11-08
- Kaynak: https://muhammetsafak.com/tr/uzmanlik/docker/
- Dil: tr-TR
- Yazar: Muhammet Şafak

---
## Docker ekosisteminde ben

Docker'a ilk baktığımda kafamı karıştıran şey, sanallaştırma kelimesinin sanal makineyle özdeşleşmiş olmasıydı. Bunu, kurulumu ve temel kullanımı [Docker sanallaştırma: kurulum ve temel kullanım](https://muhammetsafak.com/tr/blog/docker-sanallastirma-teknolojisi-kurulum-kullanim/) yazısında anlattım.

Bugün Docker benim için bir araç listesi maddesinden fazlası: uygulamanın neye ihtiyaç duyduğunu image'ın içine yazıp onu geliştirme makinesinden sunucuya aynı biçimde taşımanın yolu. Bu işin rol tarafı [DevOps ve altyapı sayfasında](https://muhammetsafak.com/tr/uzmanlik/devops/).

Docker'ın üstüne [Kubernetes](https://muhammetsafak.com/tr/uzmanlik/kubernetes/) ya da Dokploy gibi self-hosted bir PaaS koyuyorum. İkisinin altındaki sunucu [Linux](https://muhammetsafak.com/tr/uzmanlik/linux/), uygulamanın önünde ise nginx duruyor.

## Docker Mühendisi nedir?

Docker, uygulamaları geliştirmek, taşımak ve çalıştırmak için kullanılan açık bir platformdur. Uygulamayı bağımlılıklarıyla birlikte bir image'a paketler; image'dan çalışan örneğe container denir. Docker mühendisi, bu paketlemeyi ve container'ların çalıştığı ortamı kuran kişidir.

## Docker Mühendisi ne iş yapar?

Docker'ı iki yerde kullanıyorum: geliştirme ortamı olarak ve dağıtım paketi olarak. Uygulamayı container olarak paketleyip birden çok makinede [Kubernetes](https://muhammetsafak.com/tr/uzmanlik/kubernetes/) ile ya da Dokploy gibi self-hosted bir PaaS ile çalıştırıyorum; build, test ve deploy adımlarını GitHub Actions ya da Jenkins hattında tanımlıyorum.

## Birlikte kullandığım teknolojiler

- Docker: Geliştirme ortamı ve dağıtım paketi.
- Kubernetes: Container'ların birden çok makinede çalıştırıldığı, ölçeklendiği ve yeniden başlatıldığı orkestrasyon katmanı.
- Dokploy: Self-hosted PaaS; container tabanlı deploy.
- Linux: Uygulamaların çalıştığı sunucu işletim sistemi.
- nginx: Uygulamanın önündeki katman.
- GitHub Actions: Test ve deploy adımlarını repoda tanımlayan CI/CD hattı.
- Jenkins: Build, test ve deploy adımlarını çalıştıran otomasyon sunucusu.

## Bu alanda sorulanlar

- [Container'larım sürekli OOMKilled oluyor, memory limit'lerini PHP-FPM ve Go için nasıl doğru ayarlarım?](https://muhammetsafak.com/tr/sor-bakalim/containerlarim-oomkilled-memory-limitlerini-php-fpm-go-ayarlarim/) (2026-10-13)
- [Container'daki Go worker'ım SIGTERM almıyor ve graceful kapanmıyor, bu bir PID 1 sorunu mu?](https://muhammetsafak.com/tr/sor-bakalim/containerdaki-go-workerim-sigterm-almiyor-pid-1-sorunu/) (2026-09-15)
- [Container'ı non-root çalıştırınca mount edilen storage dizinine yazamıyorum, izinleri nasıl çözerim?](https://muhammetsafak.com/tr/sor-bakalim/containeri-non-root-calistirinca-mount-edilen-storage-dizinine-yazamiyorum-izinleri-nasil/) (2026-08-18)

## Sık sorulanlar

### Docker ile kaç yıldır çalışıyorsun?

2020'den bu yana, 6 yıldır.

### Docker nedir?

Docker, uygulamaları geliştirmek, taşımak ve çalıştırmak için açık bir platform. Uygulama ve bağımlılıkları bir image'a paketlenir, image'dan çalışan örneğe container denir.

### Image ile container arasındaki fark nedir?

Image, container oluşturmak için talimatlar taşıyan salt okunur bir şablon; container ise o image'ın çalışan bir örneği. Aynı image'dan istediğiniz kadar container başlatabilirsiniz.

### Docker ile sanal makine arasındaki fark nedir?

Sanal makine kendi çekirdeğiyle tam bir işletim sistemi taşır. Container ise uygulamayı kendi bağımlılıklarıyla paketler ve aynı host çekirdeğini paylaşır; Docker bu container'ları oluşturan ve yöneten araçtır.

### Docker ile Kubernetes arasındaki fark nedir?

Docker uygulamayı ve ortamını bir container olarak paketler; Kubernetes bu container'ları birden çok makinede çalıştırmayı, ölçeklemeyi ve yeniden başlatmayı yönetir. İlki paketleme, ikincisi orkestrasyon sorusu.

### Docker'ı nerede çalıştırıyorsun?

Geliştirme ortamımda ve dağıtımda. Dağıtımda container'lar birden çok makinede Kubernetes'te ya da Dokploy gibi self-hosted bir PaaS'ta çalışıyor; sunucu tarafındaki işletim sistemi Linux.

### Docker hakkında ne yazdın?

Blogda Docker'ın container mimarisini, temel komutlarını, volume ve bind mount farkını ve network türlerini anlattığım bir rehber var. Docker'a ilk baktığımda kafamı karıştıran sanallaştırma kelimesiyle de orada hesaplaşıyorum.
