Popüler Linux Dağıtımlarına Docker Kurulumu: Linux Docker Kurulum Rehberi
Seviye: Orta
Tahmini süre: ~15 dakika
Hedef: Nextcloud, Bitwarden ve Matrix gibi kişisel hizmetleri kendi sunucunuzda barındırmak (self-hosting) için Docker'ı kurarak güvenli ve merkeziyetsiz bir ortam yapılandırmak.
Giriş
Kendi "bulut" hizmetlerinizi barındırmak gizliliği ve verilerin tam sahipliğini garanti eder. Nextcloud (dosya depolama), Bitwarden (parola yönetimi) veya Matrix (güvenli iletişim) gibi hizmetleri, karmaşık ana makine düzeyindeki bağımlılıklarla uğraşmadan dağıtmak için yalıtılmış ortamlara ihtiyacınız vardır. Bu eğitimde, sağlam ve tekrarlanabilir bir self-hosting temeli oluşturmak için Linux'a Docker nasıl kurulur göreceğiz. İster tek bir sunucu ister bir sunucu filosu için eksiksiz bir Linux'ta Docker kurulumu gerekiyor olsun, aşağıdaki her adım Ubuntu, Debian ve RHEL uyumlu dağıtımlar için geçerlidir. Bu Linux Docker kurulum rehberinin sonunda, en iyi uygulamalara uygun güvenli varsayılanlarla yapılandırılmış, üretime hazır bir ortama sahip olacaksınız.
Terminoloji
Devam etmeden önce şu temel kavramları anladığınızdan emin olun:
- Docker: Uygulamaları yalıtılmış ortamlarda geliştirmek, dağıtmak ve çalıştırmak için kullanılan bir platform.
- Docker Engine: Konteynerleri oluşturan ve çalıştıran temel istemci-sunucu teknolojisi.
- Konteyner (Container): Bir uygulamanın kaynak kodunu, çalışması için gereken işletim sistemi kütüphaneleri ve bağımlılıklarla birleştiren standartlaştırılmış, çalıştırılabilir bileşen.
- İmaj (Image): Bir konteynerin nasıl oluşturulacağına dair talimatlar içeren salt okunur şablon.
- Docker daemon: Ana makinede arka planda çalışan ve konteynerlerin oluşturulmasını, çalıştırılmasını ve dağıtılmasını yöneten hizmet.
- Docker CLI: Daemon ile etkileşim kurmak için kullanılan komut satırı arayüzü.
- Docker Hub: Konteyner imajlarını bulmak ve paylaşmak için Docker tarafından işletilen genel kayıt defteri.
- Kayıt defteri (Registry): Konteyner imajları için bir depolama ve dağıtım sistemi.
- Kurulum: Programları çalıştırmaya hazır hale getirme süreci.
- Paket yöneticisi: Programların kurulmasını, yükseltilmesini, yapılandırılmasını ve kaldırılmasını otomatikleştiren yazılım aracı.
- Depo (Repository): Yazılım paketlerinin saklandığı ve bakımının yapıldığı merkezi konum.
- Resmi Docker deposu: Kararlı yazılım paketlerini edinmek için Docker tarafından işletilen güvenilir kaynak.
- Paket: Belirli bir uygulamayla birlikte gelen tüm dosyaları içeren sıkıştırılmış dosya arşivi.
- Bağımlılık: Başka bir programın doğru çalışması için gereken program veya kütüphane.
- Kararlı sürüm (Stable release): Kapsamlı biçimde test edilmiş ve üretimde kullanım için güvenilir kabul edilen yazılım sürümü.
- Sürüm: Yazılımın belirli özelliklerini ve düzeltmelerini yansıtan benzersiz durumu.
Ön koşullar
Başlamadan önce aşağıdaki koşulların karşılandığından emin olun:
- İşletim sistemi: Ubuntu 20.04/22.04/24.04 LTS, Debian 11/12/13 veya RHEL uyumlu (AlmaLinux, Rocky, RHEL) 8/9/10
- Erişim: Sunucuya sudo veya root erişimi
- Gerekli bilgi: Linux komut satırını rahatça kullanabilme
Adım 1: Docker deposunu ayarlama
En güncel, güvenli ve kararlı sürümü almak için varsayılan işletim sistemi depoları yerine her zaman resmi Docker deposunu kullanın.
Ubuntu için:
Önce Linux paket yöneticisi dizinini güncelleyin ve apt'in HTTPS üzerinden bir depo kullanabilmesi için gerekli paketleri kurun:
sudo apt update sudo apt install ca-certificates curl gnupg lsb-release
Docker'ın resmi GPG anahtarını ekleyin:
sudo mkdir -m 0755 -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \ sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Kararlı depoyu ayarlayın:
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Debian için:
Debian'a Docker kurulum adımları Ubuntu akışını yansıtır, ancak Debian'a özgü depo URL'sini kullanır. Önce Linux paket yöneticisi dizinini güncelleyin ve gerekli paketleri kurun:
sudo apt update sudo apt install ca-certificates curl gnupg lsb-release
Docker'ın resmi GPG anahtarını ekleyin:
sudo mkdir -m 0755 -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/debian/gpg | \ sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Kararlı depoyu ayarlayın:
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/debian $(lsb_release -cs) stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
RHEL uyumlu sistemler için (AlmaLinux, Rocky, RHEL):
yum-utils paketini kurun ve kararlı depoyu ayarlayın:
sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
Docker, tüm RHEL uyumlu dağıtımlar (AlmaLinux ve Rocky Linux dahil) için paketleri centos depo yolu altında yayımlar. Bu URL'nin kullanılması beklenen ve tam olarak desteklenen bir durumdur.
Sonuç: Docker deposu artık sisteminize eklendi ve paket yöneticisinin en güncel Docker paketlerini almasını sağlıyor.
Adım 2: Ubuntu ve Debian'a Docker kurulumu
Docker deposu yapılandırıldıktan sonra Ubuntu'ya Docker Engine kurulumuna (veya Debian'a - komutlar aynıdır) geçin. Bu adım her iki dağıtım için de geçerlidir.
Önce işletim sistemi depolarının sağladığı çakışan paketleri kaldırın:
sudo apt remove docker.io podman-docker containerd runc
apt paket dizinini yeniden güncelleyin ve Linux paket yöneticisiyle gerekli bileşenleri kurun:
sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin \ docker-compose-plugin
Sonuç: Komut çalışır; paketleri ve gerekli tüm bağımlılıkları Docker deposundan getirir. Paket yöneticisinin Docker Engine kurulumunu hatasız tamamlaması gerekir.
docker-ce, Docker Community Edition anlamına gelir; kendi sunucusunda barındıranlar için ideal olan ücretsiz sürümdür.
Adım 3: RHEL uyumlu sistemlere Docker kurulumu (AlmaLinux, Rocky, RHEL)
RHEL tabanlı sistemlerde Docker Engine'i kurmak için yum kullanın.
Önce işletim sistemi depolarının sağladığı çakışan paketleri kaldırın:
sudo yum remove docker docker-client docker-client-latest docker-common \ docker-latest docker-latest-logrotate docker-logrotate docker-engine \ podman runc
Aşağıdaki komutu çalıştırın:
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin \ docker-compose-plugin
Sonuç: Paket yöneticisi gerekli paketleri kurar. GPG anahtarını kabul etmeniz istenecektir (-y bayrağını kullanmadıysanız); onaylayın. İşlem tamamlandığında bir başarı mesajı görürsünüz.
Adım 4: Docker Engine kurulumunun doğrulanması
Kurulumdan sonra Docker daemon'ın davranışı dağıtıma göre değişir. Ubuntu ve Debian'da docker.service kurulumun ardından otomatik olarak başlar. RHEL ailesi dağıtımlarında başlamaz.
Yalnızca RHEL ailesi: Kurulum işlemi çekirdeği güncellediyse (örneğin bir kernel-core bağımlılığı aracılığıyla), Docker hizmetini başlatmadan önce sunucuyu yeniden başlatın:
sudo reboot
Bu adımın atlanması, çalışan çekirdek kurulu modüllerle artık eşleşmediği için systemctl start docker komutunun br_netfilter / addrtype hatalarıyla başarısız olmasına yol açabilir.
Sunucu güncel çekirdekle çalışmaya başladıktan sonra hizmeti başlatın ve etkinleştirin. Aşağıdaki komutlar idempotenttir ve tüm sistemlerde çalıştırılması güvenlidir:
sudo systemctl start docker sudo systemctl enable docker
Sonuç: Docker daemon başlar ve sistem, her yeniden başlatmada otomatik olarak çalışmasını sağlamak için bir sembolik bağ oluşturur.
hello-world imajını çalıştırarak Docker Engine kurulumunun başarılı olduğunu doğrulayın:
sudo docker run hello-world
Sonuç: Docker CLI, Docker daemon ile iletişim kurar, hello-world imajını Docker Hub'dan çeker ve bir konteyner çalıştırır. Terminalinizde "Hello from Docker!" mesajını görmelisiniz.
Adım 5: Docker kurulum sonrası adımlar
Varsayılan olarak Docker komutlarını çalıştırmak sudo gerektirir. Docker komutlarını root olmayan bir kullanıcı olarak çalıştırmak için kullanıcınızı docker grubuna eklemeniz gerekir. Bunlar, kendi barındırdığınız altyapıyı rahatça yönetmek için gerekli temel Docker kurulum sonrası adımlardır.
docker grubunu oluşturun (henüz yoksa):
getent group docker || sudo groupadd docker
Kullanıcınızı docker grubuna ekleyin:
sudo usermod -aG docker $USER
Sonuç: Kullanıcınız gruba eklenir. Değişikliklerin geçerli olması için oturumu kapatıp yeniden açmanız veya yeni grup üyeliğini mevcut oturumda etkinleştirmeniz gerekir:
newgrp docker
newgrp docker, güncellenmiş grup üyeliğine sahip yeni bir kabuk (shell) oluşturur. Bundan sonra çalıştırdığınız her docker komutu sudo olmadan çalışır, ancak yalnızca bu yeni kabuğun içinde. Başka bir terminal açmak yine tam bir yeniden oturum açma gerektirir.
Docker grubuna üyelik, ana makinede root erişimine eşdeğer ayrıcalıklar verir. Güvenliği önceleyen self-hosting ortamlarında Docker'ı rootless modda çalıştırmayı ciddi biçimde değerlendirin (bkz. Adım 6).
newgrp docker komutunu çalıştırdıktan sonra (veya oturumu kapatıp yeniden açtıktan sonra) yapılandırmayı sudo olmadan bir komut çalıştırarak test edin:
docker run hello-world
Sonuç: "Hello from Docker!" mesajını yeniden görmelisiniz; bu, Docker kurulum sonrası adımlarınızın başarılı olduğunu doğrular.
Alternatif: Kolaylık betiğiyle hızlı kurulum
Test veya geliştirme ortamları için Docker bir kolaylık betiği (convenience script) sunar.
Bu yöntem üretim için önerilmez. Sürüm sabitleme olmadan çalışır, Docker zaten kuruluysa koşulsuz yükseltme yapar ve tüm bağımlılıkları doğrulama olmadan çeker.
Betiği indirip çalıştırmadan önce incelemeniz önerilir:
curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh
Adım 6 (İsteğe bağlı): Docker'ı rootless modda çalıştırma
Self-hosting ortamlarında Docker'ı rootless modda çalıştırmak, Docker daemon'ı ve konteynerleri root olmayan bir kullanıcı olarak yürüterek güvenliği artırır.
6.1 Ön koşullar
Önce sistem genelindeki Docker hizmetini ve soketini durdurup devre dışı bırakın, ardından soket dosyasını kaldırın:
sudo systemctl stop docker.service docker.socket sudo systemctl disable docker.service docker.socket sudo rm -f /var/run/docker.sock
Kullanıcınız için subuid ve subgid değerlerinin yapılandırıldığını doğrulayın (genellikle otomatik olarak ayarlanır):
cat /etc/subuid cat /etc/subgid
Daemon'ın sistem açılışında başlayabilmesi için kullanıcınız adına lingering'i etkinleştirin:
sudo loginctl enable-linger $USER
6.2 Ek paketlerin kurulumu
Ubuntu/Debian için:
sudo apt install docker-ce-rootless-extras uidmap dbus-user-session
AlmaLinux/RHEL için (shadow-utils, uidmap sağlar ve genellikle önceden kuruludur):
sudo yum install docker-ce-rootless-extras
6.3 Rootless daemon'ın kurulumu
Kurulum betiğini hedef kullanıcının tam bir oturum açma (login) oturumundan çalıştırın (sudo su veya oturum açmayan bir SSH kabuğundan değil). Oturum açmayan bir bağlamdaysanız önce gerekli değişkenleri dışa aktarın:
export XDG_RUNTIME_DIR=/run/user/$(id -u) export DBUS_SESSION_BUS_ADDRESS=unix:path=$XDG_RUNTIME_DIR/bus
Ardından kurulum betiğini çalıştırın:
dockerd-rootless-setuptool.sh install
Kurulum betiğinin linger etkinleştirildikten hemen sonraki ilk çalıştırması kararsız olabilir. Daemon başlamazsa kurulum betiğini yeniden çalıştırmanız yeterlidir.
6.4 Ortam değişkenlerinin yapılandırılması
Aşağıdaki değişkenleri kabuk yapılandırma dosyanıza (örn. ~/.bashrc) ekleyin:
export PATH=/usr/bin:$PATH export DOCKER_HOST=unix:///run/user/$(id -u)/docker.sock
Değişikliklerin uygulanması için dosyayı yeniden yükleyin (source) veya kabuğu yeniden başlatın.
6.5 Rootless modun sınırlamaları
- 1024'ten küçük portlar yayımlanamaz (Docker,
setcap,slirp4netnsport yönlendirme veya yönlendirme gibi çözümler sunar). --net=hostdesteği yoktur.- Swarm modu ve overlay ağlar desteklenmez.
- AppArmor desteklenmez.
--privilegedbayrağı ana makine düzeyinde root erişimi vermez.- Veriler
~/.local/share/dockerdizininde saklanır (yedekleme ve kotalar için bunu göz önünde bulundurun). - cgroup v2 gerektirir.
overlay2yerineoverlayfsdepolama sürücüsünü kullanır.
Geri alma (rollback)
Standart bir kurulum ya da rootless yapılandırma olsun, Linux'taki Docker kurulumunu geri almanız gerekirse aşağıdaki adımları sırasıyla izleyin.
1. Rootless geri alma (rootless yapılandırılmadıysa atlayın):
Rootless modu yapılandırdıysanız, paketleri kaldırmadan önce bu değişiklikleri geri alın:
dockerd-rootless-setuptool.sh uninstall rm -rf ~/.local/share/docker sudo loginctl disable-linger $USER
Paketler tamamen kaldırıldıktan (purge) sonra rootless kaldırma işlemini çalıştırmak başarısız olur, çünkü kurulum betiği docker-ce-rootless-extras paketinin bir parçasıdır. Rootless modu her zaman paketler hâlâ mevcutken kaldırın.
2. Paketleri kaldırma:
Debian/Ubuntu:
sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin \ docker-compose-plugin docker-ce-rootless-extras sudo rm -rf /var/lib/docker /var/lib/containerd sudo rm -f /etc/apt/sources.list.d/docker.list /etc/apt/keyrings/docker.gpg
AlmaLinux/Rocky/RHEL:
sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin \ docker-compose-plugin docker-ce-rootless-extras sudo rm -rf /var/lib/docker /var/lib/containerd sudo rm -f /etc/yum.repos.d/docker-ce.repo
3. Grubu kaldırma:
sudo groupdel docker || true
Paketlerin kaldırılması imajları, konteynerleri, birimleri (volumes) veya özelleştirilmiş yapılandırma dosyalarını otomatik olarak silmez. rm -rf komutları bu veri dizinlerini kalıcı olarak siler.
Sonuç
Linux'taki Docker kurulumunuz tamamlandı ve doğrulandı. Temel artık güvenli biçimde hazır. Kendi barındırdığınız araçlar için konteynerleri dağıtmaya geçebilir; Nextcloud dosyalarınız, Bitwarden kasalarınız ve Matrix iletişiminiz üzerinde tam denetimi elinizde tutabilirsiniz.
Belge sürümü: 1.0
Son güncelleme: Mayıs 2026
Sahibi: Teknik Dokümantasyon Ekibi