Ana içeriğe geç

Docker Grubuna Kullanıcı Ekleme: Veri Profesyonelleri İçin Rehber

Docker’ı sudo olmadan doğru şekilde kullanmayı, sistemlerinizi güvende tutarken öğrenin.
· 10 dk. oku

Yapay Zeka ile Keşfedin

Her Docker komutundan önce sudo yazmaktan bıktınız mı? Bu yazı tam size göre.

Varsayılan olarak Docker, daemon’a erişimi kısıtlar ve yalnızca root ve docker grubundaki üyelerin komut çalıştırmasına izin verir. Bu, sisteminizi daha güvenli tutar ancak tüm gün konteynerlerle çalışırken can sıkıcı olabilir. Docker grubu tam da bu nedenle vardır - size Docker’ı sudo parolalarıyla yavaşlamadan kullanma imkânı sağlamak için.

Kendinizi docker grubuna eklediğinizde farkı anında göreceksiniz. docker build, docker run ve diğer komutları izin hataları veya parola istekleri olmadan çalıştırabilirsiniz.

Bu yazıda, farklı sistemlerde kullanıcıları docker grubuna nasıl ekleyeceğinizi, nelere dikkat etmeniz gerektiğini ve Docker’ı kullanmayı kolaylaştırırken sisteminizi nasıl koruyacağınızı adım adım öğreneceksiniz.

> 2025’te LLM’ler büyük ses getiriyor. Docker ile LLM uygulamalarını dağıtmak için bu adım adım kılavuzu izleyin.

Docker Grubunu Anlamak

Docker ile çalışmaya başladığınızda Docker, doğru kurulum yapılmadıysa kısa sürede izin sorunlarıyla karşılaşırsınız. 

Docker grubunun gerçekte ne olduğunu ve iş akışınız için neden önemli olduğunu basitçe açıklayalım.

Tanım ve işlevsellik

Docker grubu, üyelerine sudo ayrıcalıklarına ihtiyaç duymadan Docker daemon’ını kullanma izni veren bir sistem kullanıcı grubudur. 

Linux sistemlerine Docker kurduğunuzda bu grup genellikle otomatik olarak oluşturulur. Docker’ın soket dosyası (/var/run/docker.sock) root’a aittir ancak grup izinleri docker grubuna ayarlanmıştır; erişim kontrolü bu şekilde çalışır.

Bu gruptaki kullanıcılar görüntü oluşturabilir, konteyner çalıştırabilir, ağları yönetebilir ve diğer Docker işlemlerini komutların başına sudo eklemeden yapabilir. Bu da daha az yazma ve konteynerlerle çalışırken parola istemi olmaması demektir. Bu grupta olmadan Docker komutlarını çalıştırmayı denerseniz, “permission denied” hataları alır ve sonuçta ilerlemeniz yavaşlar.

Grup üyeliğinin güvenlik etkileri

Kullanıcıları docker grubuna eklemek, göz ardı edilmemesi gereken gerçek güvenlik riskleri barındırır. 

Docker grubu üyeleri ana sistemde root ayrıcalıkları elde edebilir. Bunun nedeni Docker’ın, hassas sistem dizinleri de dahil olmak üzere ana makine dizinlerini konteynerlara bağlamaya izin vermesidir. Docker erişimi olan bir kullanıcı, tüm kök dosya sistemini bağlayan bir konteyner oluşturabilir ve ana makinedeki herhangi bir dosyayı değiştirebilir.

Konteyner kaçış zafiyetleri de başka bir risktir; saldırganların konteyner izolasyonundan kurtulmasına yol açabilir. 

Yalnızca güvendiğiniz kullanıcıları docker grubuna eklemelisiniz; onu root erişimi vermekle eşdeğer sayın. Pek çok güvenlik uzmanı, docker grup üyeliğini günlük iş için gerçekten ihtiyaç duyanlarla sınırlamayı önerir.

Adım Adım Uygulama

Docker grubunun ne olduğunu ve etkilerini anladığınıza göre, şimdi gerçek kurulumla işe koyulalım.

docker grubunu oluşturma

Çoğu durumda, docker grubunu elle oluşturmanıza gerek yoktur çünkü Docker kurulumu sırasında otomatik olarak oluşturulur. Grubun var olup olmadığını şu komutla kontrol edebilirsiniz:

grep docker /etc/group

Görsel 1 - docker grubunun var olup olmadığını kontrol etme

Görsel 1 - docker grubunun var olup olmadığını kontrol etme

Herhangi bir nedenle grup yoksa (benim durumumda olduğu gibi), şu komutla oluşturabilirsiniz (yalnızca Linux için):

sudo groupadd docker

Bu komut sisteminizde docker grubunu oluşturur, ancak yalnızca Linux işletim sistemleri ile sınırlıdır. 

macOS için Apple’ın resmi talimatlarını izleyebilirsiniz, çünkü grup GUI üzerinden oluşturulur. Windows işletim sistemlerinde süreç benzerdir.

Adımları izledikten sonra grubunuzun oluşturulduğunu görmelisiniz:

Görsel 2 - docker grubunun var olup olmadığını kontrol etme (2)

Görsel 2 - docker grubunun var olup olmadığını kontrol etme (2)

Kullanıcıları gruba ekleme

Geçerli kullanıcınızı docker grubuna eklemek için Linux işletim sistemlerinde şu komutu çalıştırın:

sudo usermod -aG docker $USER

-a bayrağı “append” (ekle) anlamına gelir ve -G, kullanıcıyı eklemek istediğiniz grubu belirtir. $USER değişkeni otomatik olarak geçerli kullanıcı adınızı kullanır.

macOS ve Windows için, kullanıcıları Sistem ayarları veya Denetim masası üzerinden gruba ekleyebilirsiniz - istediğiniz kullanıcıları eklemek için bir anahtarı değiştirmeniz yeterlidir:

Görsel 3 - Kullanıcıları gruba ekleme

Görsel 3 - Kullanıcıları gruba ekleme

Kendinizi gruba ekledikten sonra, değişikliklerin etkili olması için oturumu kapatıp tekrar açmanız gerekir. Geçerli oturumunuz yeni grup üyeliğini oturumu tamamen kapatana kadar tanımaz. Bazı sistemlerde yeniden başlatmanız gerekebilir:

sudo reboot

Kullanıcınızın artık docker grubunun bir parçası olduğunu doğrulamak için şunu çalıştırın:

groups

Grup üyelikleriniz arasında “docker”ı görmelisiniz:

Görsel 4 - Kullanıcı gruplarını görüntüleme

Görsel 4 - Kullanıcı gruplarını görüntüleme

Yaygın sorunların giderilmesi

Kendinizi gruba ekledikten sonra hâlâ “permission denied” hataları alıyorsanız, Docker soket izinlerini düzeltmeniz gerekebilir:

sudo chown root:docker /var/run/docker.sock
sudo chmod 660 /var/run/docker.sock

Başka bir yaygın sorun, Docker hizmeti yeniden başlatıldığında soket izinlerinin sıfırlanmasıdır. Docker’ı grup değişikliklerinden sonra başlattıysanız, Docker hizmetini yeniden başlatmayı deneyin:

sudo systemctl restart docker

Kalıcı izin sorunları için, Docker hizmeti yapılandırmanızın doğru olduğunu kontrol edin. Bazı sistemlerde Docker farklı bir grup adı veya soket konumu kullanacak şekilde yapılandırılmış olabilir. /etc/docker/daemon.json dosyasındaki Docker daemon yapılandırmasını veya /lib/systemd/system/docker.service altındaki hizmet dosyalarını kontrol edebilirsiniz.

Yaptığınız herhangi bir izin değişikliğinin oturumu kapatıp tekrar açtıktan sonra geçerli oturumunuza uygulanacağını unutmayın. Bu, “Değişiklikleri yaptım ama hâlâ çalışmıyor” sorunlarının bir numaralı nedenidir.

Güvenlik Değerlendirmeleri ve Önlemler

Kullanıcıları docker grubuna eklemek güvenlik riskleri yaratabilir; bunların farkında olmanız gerekir. Bu riskleri ve sistemlerinizi korumak için yapabileceklerinizi inceleyelim.

docker grup üyeliğinin riskleri

Docker grup üyeliği, pratikte sisteminizde root erişimine sahip olmakla aynıdır. Bu abartı değil – Docker’ın çalışma biçiminin bir gerçeğidir.

docker grubundayken, ana makine dosya sisteminizin hassas kısımlarını bağlayan konteynerlar çalıştırabilirsiniz. Örneğin, şu basit komut, ana makinenizdeki herhangi bir dosyayı değiştirmek için tam erişim verir:

docker run -it --rm -v /:/hostroot alpine chroot /hostroot

Ayrıca Docker daemon ayarlarını değiştirebilir, ayrıcalıklı konteynerlar oluşturabilir veya ağ izolasyonunu atlamak için ana makine ağ modunu kullanabilirsiniz. Bu yetenekler, kötü niyetli kullanıcıların (veya Docker erişimi olan ele geçirilmiş uygulamaların) ana sisteminizi tamamen ele geçirmesine olanak tanır.

Bilmeniz gereken birkaç potansiyel risk daha var:

  • Donanım aygıtlarına doğrudan erişen konteynerlar çalıştırmak.
  • Düşük numaralı ağ portlarına bağlanmak.
  • Güvenlik kontrollerini devre dışı bırakan özel seccomp profilleriyle konteyner başlatmak.
  • Ana makinenin süreç ad alanını kullanan konteynerlar oluşturmak.

Bunların her biri, ayrıcalık yükseltmek veya sistem işlemlerini aksatmak için kötüye kullanılabilir.

Risk azaltma için en iyi uygulamalar

Bu riskleri azaltmak için asgari ayrıcalık ilkesini izleyin — docker grup üyeliğini yalnızca gerçekten ihtiyaç duyanlara verin. Birden fazla kişinin paylaşımlı bir sistemi kullanması gerekiyorsa, yalnızca Docker işlemleri için ayrı bir kullanıcı hesabı oluşturmayı düşünün.

Docker’ın rootless modu, docker grup yaklaşımına daha güvenli bir alternatiftir. Rootless mod, Docker daemon’ını ve konteynerları ayrıcalıksız bir kullanıcı olarak, özel bir gruba üyelik gerektirmeden çalıştırmanıza imkân tanır:

# Docker'ı rootless modda kurun
dockerd-rootless-setuptool.sh install

# Rootless Docker daemon'ını başlatın
systemctl --user start docker

Kullanıcı ad alanları (namespaces), konteyner UID’lerini ana makinede farklı bir aralığa eşleyerek ek bir güvenlik katmanı sağlar. Bu, bir konteyner root (UID 0) olarak çalışsa bile, bu sürecin ana makinede ayrıcalıksız bir kullanıcıya eşleneceği anlamına gelir:

# /etc/docker/daemon.json dosyasına ekleyin
{
  "userns-remap": "default"
}

Tutarlı kimlik eşlemesi için konteyner kullanıcılarında statik UID/GID tahsisini kullanmayı düşünün. Dockerfile’larınızda önceden belirlenmiş kimliklere sahip belirli kullanıcılar oluşturun:

# Statik UID/GID ile bir kullanıcı oluşturun
RUN groupadd -g 10001 appgroup && \
    useradd -u 10000 -g appgroup -s /bin/bash appuser

# O kullanıcıya geçin
USER appuser

Düzenli olarak, şu gibi komutlarla docker grup üyelerini denetleyin:

getent group docker

Ve artık erişime ihtiyaç duymayan kullanıcıları kaldırın:

sudo gpasswd -d username docker

Bu yaklaşımların birleşimi, docker grup üyeliğinin sağladığı kolaylığı sürdürürken getirdiği güvenlik risklerini en aza indirmenize yardımcı olur.

Gelişmiş Yapılandırma ve Alternatifler

Docker erişimini standart grup üyeliğinin ötesinde yönetmenin farklı yollarını arıyorsanız seçenekler var. Güvenlik gereksinimlerinize daha iyi uyabilecek bazı gelişmiş yapılandırma ve alternatifleri inceleyelim.

Dockerfile güvenlik sağlamlaştırma

Kullanıcıların docker grup erişimi olsa bile riskleri azaltmak için güvenliği doğrudan Dockerfile’larınıza dahil edebilirsiniz.

Aşağıdaki örnekte, Python imajlarınızı küçük tutmak ve saldırı yüzeyini azaltmak için çok aşamalı derlemeler kullanacağım. 

Takip etmek için şu dosyaları oluşturun:

app.py:

from flask import Flask, jsonify

app = Flask(__name__)


@app.route("/api/health")
def health():
    return jsonify({"status": "healthy"})


if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000, debug=True)

requirements.txt:

flask==3.1.0

Dockerfile:

FROM python:3.13-slim AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

FROM python:3.13-slim
WORKDIR /app
COPY --from=builder /usr/local/lib/python3.13/site-packages /usr/local/lib/python3.13/site-packages
COPY . .
RUN useradd -r -u 1000 -g users appuser
USER appuser
CMD ["python", "app.py"]

Özetle bu Dockerfile, ayrıcalıksız bir kullanıcıyla USER talimatını içerir ve ilgili içeriği (Python paketleri) önceki derleme adımından kopyalar.

> Uygulamaları konteynerleştirmeye yeniyseniz, merak etmeyin - kapsamlı rehberimiz size yardımcı olacaktır.

Böyle bir konteynerı aşağıdaki komutlarla oluşturup çalıştırabilirsiniz:

# İmajı oluşturun
docker build -t my-python-app .

# Konteynerı çalıştırın
docker run --cap-drop=ALL --cap-add=NET_BIND_SERVICE my-python-app

Görsel 5 - Asgari ayrıcalıklarla bir konteyner çalıştırma

Görsel 5 - Asgari ayrıcalıklarla bir konteyner çalıştırma

Yeni eklenen --cap-drop=ALL komutu, konteynerdan tüm Linux yeteneklerini düşürür (ayrıcalıkları kısıtlar); --cap-add=NET_BIND_SERVICE komutu ise konteynerın düşük numaralı portlara bağlanmasına izin veren NET_BIND_SERVICE yeteneğini geri ekler.

Bu teknikler, docker grup erişimi olan biri kötüye kullanmaya çalışsa bile, bir konteynerın yapabileceklerini sınırlar.

Alternatif olarak sudo

Kullanıcıları docker grubuna eklemek istemiyorsanız, sudo kullanmak geçerli bir alternatiftir. Bu yaklaşım size daha fazla kontrol ve Docker komutlarına ilişkin bir denetim izi sağlar.

Belirli kullanıcıların yalnızca Docker komutlarını parolasız çalıştırmasına izin veren özel bir sudoers girdisi oluşturabilirsiniz:

# /etc/sudoers.d/docker dosyasına ekleyin
username ALL=(root) NOPASSWD: /usr/bin/docker

Kullanılabilirliği artırmak için .bashrc veya .zshrc dosyanızda alias’lar oluşturun:

alias docker='sudo docker'
alias docker-compose='sudo docker-compose'

Bu sudo yaklaşımı daha iyi güvenlik sunar çünkü:

  • Tüm Docker komutları sistem günlüklerine kaydedilir.
  • Hangi Docker alt komutlarına izin verileceğini kısıtlayabilirsiniz.
  • Kullanıcılar Docker daemon yapılandırmasını değiştiremez.

Dezavantajı, biraz daha fazla yazma ve doğrudan Docker erişimi bekleyen araçlarla yaşanabilecek olası sorunlardır.

Windows özelinde dikkat edilmesi gerekenler

Windows, Docker izinlerini Linux’tan farklı şekilde ele alır. docker grubu yerine Windows, docker-users grubunu kullanır.

Windows’ta bir kullanıcıyı docker-users grubuna eklemek için şunları yapın:

  1. Bilgisayar Yönetimi’ni açın (Başlat’a sağ tıklayın ve “Bilgisayar Yönetimi”ni seçin).
  2. Sistem Araçları > Yerel Kullanıcılar ve Gruplar > Gruplar’a gidin.
  3. “docker-users”a çift tıklayın.
  4. “Ekle”ye tıklayın ve kullanıcı adını girin.
  5. “Tamam”a tıklayın ve Bilgisayar Yönetimi’ni kapatın.

Görsel 6 - Windows’ta kullanıcı grupları

Görsel 6 - Windows’ta kullanıcı grupları

Alternatif olarak, yönetici ayrıcalıklarıyla PowerShell kullanabilirsiniz:

Add-LocalGroupMember -Group "docker-users" -Member "username"

Bir kullanıcıyı ekledikten sonra, tıpkı Linux’ta olduğu gibi, değişikliklerin etkili olması için oturumu kapatıp tekrar açması gerekir.

Ayrıca Windows’un, Linux’ta olmayan ek güvenlik özellikleri sunduğunu da not etmek gerekir; Windows Defender Uygulama Denetimi ve Hyper-V izolasyon modları gibi. Windows’taki yüksek güvenlikli ortamlarda, bu özellikleri konteynerlarla ana makine arasında daha güçlü sınırlar oluşturmak için kullanabilirsiniz.

> Veri profesyonellerinin 2025’te Docker’a ihtiyacı var ve bu rehber onu nasıl öğreneceğinizi gösterecek.

Docker Kullanıcı Gruplarını Özetlemek

Artık kullanıcıları docker grubuna nasıl ekleyeceğiniz ve bunun neden önemli olduğuna dair tam bir resme sahipsiniz. Neleri ele aldığımızı kısaca özetleyelim.

Kullanıcıları docker grubuna eklemek, sudo komutlarına duyulan ihtiyacı ortadan kaldırarak konteynerlarla çalışmayı çok daha kolay hale getirir. Süreç basittir: grubun var olup olmadığını kontrol edin, kullanıcınızı usermod -aG docker $USER ile ekleyin ve ardından oturumu kapatıp tekrar açın. Sorun yaşarsanız, soket izinlerinizi kontrol edin ve Docker’ı yeniden başlatın.

Ancak birine docker grup erişimi vermenin, ona neredeyse root parolasını vermekle aynı olduğunu unutmayın. Bu gruptaki herkes tüm dosya sisteminizi bağlayabilir, yazılım kurabilir veya konteynerlar aracılığıyla sistem dosyalarını bile değiştirebilir. Bu nedenle, kimin bu erişimi alacağı konusunda seçici olmak çok önemlidir.

Peki, ortamınız için doğru yaklaşım nedir?

Genel olarak, kendi makinelerinde çalışan geliştiriciler için docker grup üyeliği uygundur. Paylaşımlı sunucular veya üretim ortamları için rootless mod, kullanıcı ad alanları veya sınırlı komutlarla sudo gibi alternatifleri değerlendirin. Ve ne yaparsanız yapın, Dockerfile’larınızda ayrıcalıksız kullanıcılar kullanarak ve gereksiz yetenekleri düşürerek güvenlik en iyi uygulamalarını her zaman izleyin.

Düzenli denetimler yaparak docker grup erişimi olanları takip edin. İnsanlar rol değiştirir, ekipten ayrılır veya zamanla belirli izinlere ihtiyaç duymayı bırakır. getent group docker ile yapılacak hızlı bir kontrol, artık orada olmaması gereken kullanıcıları tespit etmenize yardımcı olabilir.

Docker ve genel olarak konteynerleştirme hakkında daha fazla bilgi edinmek istiyorsanız, şu DataCamp kursları sıradaki en iyi adımlarınızdır:

SSS

Docker grubu nedir ve neden önemlidir?

Docker grubu, üyelerine sudo ayrıcalıkları olmadan Docker daemon’ını kullanma izni veren bir sistem kullanıcı grubudur. Parola istemlerini ve izin hatalarını ortadan kaldırarak Docker komutlarını daha pratik hale getirmek için vardır. Linux sistemlerine Docker kurduğunuzda bu grup otomatik olarak oluşturulur ve Docker soket dosyasına erişimi kontrol eder. Kullanıcıları bu gruba eklemek, tüm Docker komutlarını doğrudan çalıştırmalarına olanak tanır ve iş akışı verimliliğini önemli ölçüde artırır.

Docker grup üyeliği hangi güvenlik risklerini taşır?

Docker grup üyeliği, fiilen sisteminizde root’a eşdeğer erişim sağlar. Üyeler, ana makine dosya sistemini konteyner içine bağlayabilir, sistem dosyalarını değiştirebilir ve potansiyel olarak tam yönetici erişimi elde edebilir. Ayrıca Docker daemon yapılandırmalarını değiştirebilir ve donanıma doğrudan erişimi olan ayrıcalıklı konteynerlar çalıştırabilirler. Bu erişim düzeyi, yalnızca güvendiğiniz kullanıcıları Docker grubuna eklemeyi ve ek güvenlik sağlamlaştırma önlemlerini izlemeyi zorunlu kılar.

Kullanıcıları Docker grubuna eklemeden Docker kullanabilir miyim?

Evet, kullanıcıları Docker grubuna eklemeden de Docker kullanabilirsiniz. En yaygın alternatif, her Docker komutunun önüne sudo koymaktır; bu da daha iyi güvenlik ve denetim sağlar. Bir başka seçenek de Docker’ın rootless modunu kurmaktır; bu, daemon’ı ve konteynerları ayrıcalıksız bir kullanıcı olarak çalıştırmanıza imkân verir. Ayrıca belirli kullanıcıların yalnızca Docker komutlarını parolasız çalıştırmasına izin veren özel sudoers girdileri de oluşturabilirsiniz.

Bir kullanıcının Docker grubuna başarıyla eklenip eklenmediğini nasıl doğrularım?

Docker grubuna başarılı bir şekilde eklendiğinizi, kullanıcının üye olduğu tüm grupları listeleyen groups $USERNAME komutunu çalıştırarak doğrulayabilirsiniz. Listede “docker” görünüyorsa, kullanıcı üyedir. Alternatif olarak getent group docker ile Docker grubundaki tüm üyeleri görebilirsiniz. Yeni grup üyeliklerinin etkili olması için kullanıcıların oturumu kapatıp tekrar açması gerektiğini unutmayın; bu, sık karşılaşılan bir sorun giderme noktasıdır.

Windows’ta Docker grup yönetimi, Linux’tan nasıl farklıdır?

Windows, Linux’taki “docker” grubu yerine “docker-users” grubunu kullanır. Windows’ta kullanıcıları Bilgisayar Yönetimi üzerinden veya yönetici ayrıcalıklarıyla PowerShell’de Add-LocalGroupMember komutuyla eklersiniz. Linux’tan farklı olarak Windows, Windows Defender Uygulama Denetimi ve Hyper-V izolasyon modlarıyla ek güvenlik sunar. Ancak tıpkı Linux’ta olduğu gibi, değişikliklerin etkili olması için kullanıcıların gruba eklendikten sonra oturumu kapatıp tekrar açması gerekir.

Dario Radečić

Yazar

Dario Radečić

Hırvatistan merkezli Kıdemli Veri Bilimci. 700’ün üzerinde yayımlanmış makaleyle 10 M+ görüntüleme elde eden, önde gelen bir teknoloji yazarı. TPOT ile Makine Öğrenimi Otomasyonu kitabının yazarı.

Konular

İlgili