Bu rehberde, Ubuntu Server 20.04 LTS üzerinde yeni bir kullanıcıya Docker rootless kurulumunun nasıl yapılacağını adım adım anlatacağım. Rootless mod, Docker’ı root yetkisi olmadan çalıştırmanızı sağlar ve bu da güvenliği artırır.

1. Adım: Yeni Kullanıcı Oluşturma

Öncelikle, dockeruser adında yeni bir kullanıcı ekleyelim.

sudo adduser dockeruser
sudo passwd dockeruser
sudo usermod -aG sudo dockeruser

2. Adım: SSH ile Bağlanma

Docker rootless kurulumunu yaparken yeni kullanıcıyla SSH üzerinden bağlanmamız gerekiyor. Aşağıdaki komutu kullanarak bağlanabilirsiniz:

ssh dockeruser@localhost
# Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

3. Adım: Docker Rootless Kurulumu

SSH ile bağlandıktan sonra, Docker rootless kurulumuna başlayabiliriz.

sudo apt-get install -y uidmap
curl -fsSL https://get.docker.com/rootless | sh

Kurulum tamamlandığında, PATH ve DOCKER_HOST bilgilerini .bashrc dosyasına eklemeniz gerekecektir.

# .bashrc dosyasına eklenmesi gereken satırlar:
export PATH=/usr/bin:$PATH
export DOCKER_HOST=unix:///run/user/1000/docker.sock

Bu bilgileri .bashrc dosyasının en altına ekleyelim:

nano ~/.bashrc

4. Adım: Docker’ı Başlatma ve Sistem Başlangıcında Çalıştırma

Docker’ı başlatın ve sistem yeniden başladığında çalışmasını sağlayın:

systemctl --user start docker
systemctl --user enable docker
sudo loginctl enable-linger dockeruser

5. Adım: Kullanıcı ID’sini Öğrenme ve Servis API’sini Düzenleme

Öncelikle kullanıcı ID’nizi öğrenin:

id
# uid:<burada yazan değer sizin user ID'niz>

Servis API dosyasını açın:

nano ~/.config/systemd/user/default.target.wants/docker.service

Dosyaya aşağıdaki satırları ekleyin (UID’nizi kendi değerinize göre güncelleyin):

[Unit]
Description=Docker Application Container Engine (Rootless)
Documentation=https://docs.docker.com/engine/security/rootless/

[Service]
Environment=DOCKERD_ROOTLESS_ROOTLESSKIT_FLAGS="-p 0.0.0.0:2376:2376/tcp"
ExecStart=/home/dockeruser/bin/dockerd-rootless.sh -H tcp://0.0.0.0:2376 -H unix:///run/user/1000/docker.sock

6. Adım: slirp4netns Kurulumu

Docker rootless modunda dışardan bağlanan kişinin gerçek IP’sini göstermek için slirp4netns kuralım:

sudo apt-get install slirp4netns

Servis API dosyasını tekrar açın ve [Service] alanına aşağıdaki satırı ekleyin:

Environment="DOCKERD_ROOTLESS_ROOTLESSKIT_PORT_DRIVER=slirp4netns"

7. Adım: Override.conf Dosyasını Oluşturma

~/.config/systemd/user altına docker.service.d klasörü ve içerisine override.conf dosyasını oluşturalım:

cd ~/.config/systemd/user
mkdir docker.service.d
cd docker.service.d
touch override.conf

8. Adım: Servisi Yeniden Yükleme ve Docker’ı Yeniden Başlatma

Servisi yeniden yükleyin ve Docker’ı yeniden başlatın:

systemctl --user daemon-reload
systemctl --user restart docker

9. Adım: Kullanıcının Sudo Yetkisini Kaldırma

Kullanıcının sudo yetkisini alalım:

sudo deluser dockeruser sudo

10. Adım: Sunucuyu Yeniden Başlatma

Sunucuyu yeniden başlatın:

sudo reboot

Artık Docker rootless modunda kullanıma hazır. Bu rehberi takip ederek güvenli ve root yetkisi olmadan Docker’ı kullanabilirsiniz. Sorularınız veya geri bildirimleriniz için yorum bırakabilirsiniz. İyi çalışmalar!