Docker Nedir? Ubuntu Sunucuya Docker Kurulumu
Docker nedir, ne işe yarar? Ubuntu, Debian ve AlmaLinux sunucuya Docker kurulumu, temel komutlar, Docker Compose ile uygulama yayınlama ve güvenlik duvarı.

İçindekiler
Docker, uygulamaları ihtiyaç duydukları her şeyle birlikte konteyner adı verilen yalıtılmış paketlerde çalıştıran açık kaynaklı bir platformdur. Bir uygulamanın kütüphaneleri, çalışma ortamı ve ayarları tek bir imajda toplanır; bu imaj Docker kurulu her sunucuda aynı şekilde çalışır. "Benim bilgisayarımda çalışıyordu" sorununu ortadan kaldırır ve bir sunucuda onlarca servisi birbirine karışmadan çalıştırmanızı sağlar.
Bu rehberde Docker'ın ne olduğunu, sanal sunucudan farkını, Ubuntu, Debian ve AlmaLinux sunucuya Docker kurulumunu, temel komutları ve Docker Compose ile bir uygulamayı nasıl yayınlayacağınızı anlatıyoruz.
Docker nedir, ne işe yarar?
Docker'ı anlamak için üç kavram yeterlidir:
- İmaj (image): Bir uygulamanın çalışması için gereken her şeyi içeren, salt okunur şablon.
nginx,mysqlya danodegibi binlerce hazır imaj Docker Hub'da bulunur. - Konteyner (container): Bir imajın çalışan kopyası. Aynı imajdan istediğiniz kadar konteyner başlatabilirsiniz.
- Volume: Konteyner silinse bile kalan kalıcı veri alanı. Veritabanı dosyaları ve yüklenen içerikler burada tutulur.
Docker en çok şu durumlarda işe yarar:
- Kolay kurulum: Bir veritabanını, izleme aracını ya da web uygulamasını tek komutla ayağa kaldırırsınız.
- Çakışmasız çalışma: Farklı Node.js, PHP ya da Python sürümü isteyen uygulamalar aynı sunucuda yan yana çalışır.
- Taşınabilirlik: Bir uygulamayı yeni sunucuya taşımak için yalnızca yapılandırma dosyalarını ve verileri kopyalarsınız.
- Kolay güncelleme ve geri alma: Yeni sürümün imajını çekip konteyneri yeniden oluşturursunuz; sorun çıkarsa eski sürüme dönmek bir satırlık değişikliktir.
Docker ile sanal sunucu arasındaki fark
| Özellik | Sanal sunucu (VPS/VDS) | Docker konteyneri |
|---|---|---|
| İşletim sistemi | Her biri kendi çekirdeğiyle tam işletim sistemi | Sunucunun çekirdeğini paylaşır |
| Açılış süresi | Dakikalar | Saniyeler |
| Kaynak yükü | Her biri ayrı bir işletim sistemi çalıştırır | Çok hafif, yalnızca uygulama |
| Yalıtım | Donanım düzeyinde sanallaştırma | Süreç düzeyinde yalıtım |
| Ne için kullanılır | Sunucunun kendisi | Sunucunun içindeki uygulamalar |
İkisi birbirinin rakibi değil, tamamlayıcısıdır: Tipik bir kurulumda bir VDS kiralar, içine Docker kurar ve uygulamalarınızı konteynerler olarak çalıştırırsınız.
Ubuntu ve Debian'a Docker kurulumu
Dağıtımın kendi deposundaki docker.io paketi çoğu zaman eski kalır. Docker'ın resmî deposunu kullanmanızı öneririz. Sunucunuza SSH ile bağlandıktan sonra şu komutları sırayla çalıştırın.
- Gerekli paketleri kurun ve Docker'ın imza anahtarını ekleyin:
sudo apt update sudo apt install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc - Docker deposunu ekleyin:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null - Docker'ı ve Compose eklentisini kurun:
sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin - Kurulumu test edin:
sudo docker run hello-world
"Hello from Docker!" mesajını görüyorsanız kurulum tamamdır.
Debian kullanıyorsanız aynı adımları uygulayın; yalnızca 1. ve 2. adımdaki adreslerde ubuntu yerine debian yazın.
AlmaLinux ve Rocky Linux
RHEL tabanlı dağıtımlarda Docker'ın RHEL deposunu kullanın:
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl enable --now docker
Docker'ı sudo olmadan kullanmak
Her komutun başına sudo yazmak istemiyorsanız kullanıcınızı docker grubuna ekleyin ve oturumu kapatıp yeniden açın:
sudo usermod -aG docker $USER
Şunu bilmeniz önemli: docker grubundaki bir kullanıcı pratikte root yetkisine sahiptir. Bu gruba yalnızca güvendiğiniz kullanıcıları ekleyin.
Temel Docker komutları
| Komut | Ne yapar? |
|---|---|
docker ps | Çalışan konteynerleri listeler (-a ile hepsini) |
docker images | İndirilmiş imajları listeler |
docker pull nginx | Bir imajı indirir |
docker logs -f konteyner | Konteynerin çıktısını canlı izler |
docker exec -it konteyner bash | Çalışan konteynerin içinde komut satırı açar |
docker stop konteyner | Konteyneri durdurur |
docker rm konteyner | Durdurulmuş konteyneri siler |
docker system prune | Kullanılmayan konteyner, ağ ve imajları temizler |
Tek bir konteyneri docker run ile başlatabilirsiniz:
docker run -d --name web -p 8080:80 --restart unless-stopped nginx
-d konteyneri arka planda çalıştırır, -p 8080:80 sunucunun 8080 portunu konteynerin 80 portuna bağlar, --restart unless-stopped ise sunucu yeniden başladığında konteynerin de otomatik açılmasını sağlar.
Docker Compose ile uygulama yayınlama
Birden fazla ayarı ya da birden fazla konteyneri uzun docker run komutlarıyla yönetmek zordur. Docker Compose, bütün yapılandırmayı tek bir compose.yaml dosyasında toplar. Örnek olarak sitelerinizin ve sunucularınızın çalışıp çalışmadığını izleyen açık kaynaklı Uptime Kuma'yı kuralım.
Bir klasör oluşturup içine compose.yaml dosyasını yazın:
services:
uptime-kuma:
image: louislam/uptime-kuma:1
restart: unless-stopped
ports:
- '3001:3001'
volumes:
- ./data:/app/data
Ardından aynı klasörde çalıştırın:
docker compose up -d
Uygulama http://sunucu-ip:3001 adresinde açılır. Veriler klasördeki data dizininde tutulduğu için konteyneri silseniz de kaybolmaz. Sık kullanacağınız Compose komutları:
docker compose ps: Servislerin durumunu gösterir.docker compose logs -f: Tüm servislerin günlüklerini izler.docker compose pull && docker compose up -d: İmajları günceller ve konteynerleri yeni sürümle yeniden oluşturur.docker compose down: Servisleri durdurur ve konteynerleri siler; volume'lar ve bağlı klasörler yerinde kalır.
Gerçek bir sitede uygulamayı doğrudan dışarıya açmak yerine önüne Nginx ya da Caddy gibi bir ters vekil sunucu (reverse proxy) koyup alan adınız ve SSL sertifikası ile yayınlamanızı öneririz.
Docker ve güvenlik duvarı
Docker kullanıcılarını en çok şaşırtan konu budur: Docker'ın yayınladığı portlar ufw kurallarını atlar. Docker, -p ya da ports: ile açtığınız portlar için iptables kurallarını kendisi ekler ve bu kurallar ufw'den önce işlenir. Yani ufw'de kapalı görünen bir veritabanı portu internete açık olabilir.
Bunu önlemek için yalnızca sunucunun içinden erişilmesi gereken portları yerel adrese bağlayın:
ports:
- '127.0.0.1:3306:3306'
Daha da iyisi, veritabanı gibi servislerin portunu hiç yayınlamayın. Aynı Compose dosyasındaki servisler birbirine servis adlarıyla (örneğin db:3306) ulaşabilir; dışarıya yalnızca gerçekten herkese açık olması gereken portu açın. Portların ve güvenlik duvarının nasıl çalıştığını Port nedir? yazımızda ayrıntılı anlattık.
Docker'ı güncel ve sağlıklı tutmak
- İmaj sürümlerini sabitleyin.
latestyerinepostgres:16gibi bir ana sürüm kullanın; böylece bir güncelleme beklenmedik bir büyük sürüm atlaması yapmaz. - Düzenli güncelleyin. Docker Engine, sistem güncellemeleriyle
apt upgradesırasında güncellenir. İmajları dadocker compose pullile düzenli yenileyin. - Diski izleyin. Eski imajlar ve günlükler zamanla yer kaplar.
docker system dfile kullanımı görebilir,docker system pruneile temizleyebilirsiniz. - Volume'ları yedekleyin. Sunucu yedekleri işinizi görür, ama veritabanlarının ayrıca düzenli bir dökümünü (dump) almak en güvenli yoldur.
Docker için Nodesty sunucuları
Docker'ın tam potansiyeli için root erişimli ve KVM sanallaştırmalı bir sunucuya ihtiyacınız vardır. Nodesty AMD Ryzen 9 9950X VDS paketleri yüksek tek çekirdek hızıyla web uygulamaları ve oyun sunucuları için, AMD EPYC 7763 VDS paketleri ise bol RAM'iyle çok sayıda konteyner ve veritabanı için uygundur. Her iki pakette de NVMe disk, nShield DDoS koruması ve 7 gün saklanan ücretsiz günlük yedekleme bulunur; Ubuntu, Debian ya da AlmaLinux'u seçip Docker'ı dakikalar içinde kurabilirsiniz.
Sıkça Sorulan Sorular
Docker ile sanal sunucu aynı şey mi?
Hayır. Sanal sunucu (VPS/VDS) kendi çekirdeği olan tam bir işletim sistemi çalıştırır. Docker konteynerleri ise aynı sunucunun çekirdeğini paylaşan, birbirinden yalıtılmış süreçlerdir. Docker genellikle bir VPS ya da fiziksel sunucunun içinde çalışır.
Docker ücretli mi?
Sunucuda kullandığınız Docker Engine açık kaynaklı ve ücretsizdir. Ücretlendirme yalnızca masaüstü bilgisayarlar için Docker Desktop'ı ticari olarak kullanan büyük şirketleri ve Docker Hub'ın bazı ücretli planlarını kapsar.
Docker için kaç GB RAM gerekir?
Docker Engine'in kendisi birkaç yüz MB ile çalışır. Asıl ihtiyacı konteynerlerin içindeki uygulamalar belirler. Birkaç küçük web servisi ve bir veritabanı için 2–4 GB, çok sayıda servis ya da büyük veritabanları için 8 GB ve üzeri iyi bir başlangıçtır.
Docker Windows sunucuda çalışır mı?
Linux konteynerleri en sorunsuz Linux sunucularda çalışır ve Docker imajlarının büyük çoğunluğu Linux içindir. Windows Server'da Windows konteynerleri çalıştırmak mümkündür ama sunucuda Docker kullanacaksanız Ubuntu ya da Debian gibi bir Linux dağıtımı seçmenizi öneririz.
Konteyner silinince verilerim kaybolur mu?
Konteynerin içine yazılan veriler, konteyner silindiğinde kaybolur. Kalıcı olması gereken veriler için volume ya da sunucudaki bir klasörü bağlayan bind mount kullanın. Bu şekilde imajı güncellediğinizde ya da konteyneri yeniden oluşturduğunuzda veriler yerinde kalır.
Docker ile açtığım port neden ufw'ye rağmen erişilebilir?
Docker, yayınladığı portlar için iptables kurallarını kendisi ekler ve bu kurallar ufw kurallarından önce işlenir. Bu yüzden ufw'de kapalı görünen bir port Docker üzerinden dışarıya açık olabilir. Yalnızca sunucunun içinden erişilmesi gereken portları 127.0.0.1 adresine bağlayın.
Yazar hakkında
Nodesty Ekibi · Altyapı ve Destek
Nodesty ekibi sunucularımızı, ağımızı ve DDoS korumamızı her gün işletir ve müşteri destek taleplerini 7/24 yanıtlar. Bu rehberler o deneyimden yazılır.
İlgili yazılar

Load Balancer (Yük Dengeleyici) Nedir? Nasıl Çalışır?
Load balancer nedir, ne işe yarar? Yük dengeleme yöntemleri, sağlık kontrolleri, oturum yönetimi, Nginx ile yük dengeleme, HAProxy ve ne zaman gerekir.

Ubuntu Sürüm Yükseltme: Sunucuyu Yeni LTS Sürümüne Taşıma
Ubuntu sunucu yeni LTS sürümüne nasıl yükseltilir? Yedek, hazırlık, do-release-upgrade adımları, SSH bağlantısı, sonrası kontroller ve temiz kurulum.

Laravel Uygulamasını VDS'te Yayınlama Rehberi
Laravel uygulaması sunucuda nasıl yayınlanır? PHP-FPM, Composer, .env, veritabanı, dosya izinleri, Nginx, kuyruk işçisi, zamanlayıcı, SSL ve güncelleme.