İyi haber: yeni docker (sürüm 19.03 (şu anda deneysel)), bir kök kullanıcı kullanılarak oluşabilecek sorunları köksüz olarak çalıştırabilecektir. Artık yükseltilmiş izinler, kök ve istemediğiniz zaman makinenizi açabilecek herhangi bir şeyle uğraşmak yok.
Bu konuda video [DockerCon 2019] Köksüz modda Docker daemonunu sertleştirme
Köksüz Docker moduna birkaç Uyarı
Docker mühendisleri, köksüz modun Docker engine özelliklerinin eksiksiz paketinin yerine geçemeyeceğini söylüyor. Köksüz mod için bazı sınırlamalar şunlardır:
- cgroups kaynak denetimleri, apparmor güvenlik profilleri, denetim noktası / geri yükleme, kaplama ağları vb. köksüz modda çalışmayın.
- Bağlantı noktalarını kapsayıcılardan açığa çıkarmak şu anda manuel socat yardımcı işlemi gerektirir.
- Yalnızca Ubuntu tabanlı dağıtımlar, köksüz modda yer paylaşımı dosya sistemlerini destekler.
- Köksüz mod şu anda yalnızca alıştığınız kadar kararlı olmayabilecek gece yapıları için sağlanmıştır.
Docker 19.3'ten itibaren bu modası geçmiş (ve gerekenden daha tehlikeli):
Bu docker kılavuzu bu konuda söyleyecek bir şey var mı:
Kök olmayan erişim sağlama
Docker daemon her zaman kök kullanıcı olarak çalışır ve Docker sürüm 0.5.2'den bu yana docker daemon TCP bağlantı noktası yerine bir Unıx soketine bağlanır. Varsayılan olarak, Unix soketi kullanıcı köküne aittir ve bu nedenle varsayılan olarak sudo ile erişebilirsiniz.
0.5.3 sürümünden başlayarak, siz (veya Docker yükleyiciniz) docker adında bir Unix grubu oluşturup buna kullanıcı eklerseniz, docker daemon başlatıldığında docker grubu tarafından Unix soketinin sahipliğini okunabilir / yazılabilir hale getirir. Docker daemonunun her zaman kök kullanıcı olarak çalışması gerekir, ancak docker istemcisini docker grubundaki bir kullanıcı olarak çalıştırırsanız, tüm istemci komutlarına sudo eklemeniz gerekmez. 0.9.0'dan itibaren docker dışındaki bir grubun -G seçeneğiyle Unıx soketine sahip olması gerektiğini belirtebilirsiniz.
Uyarı: Docker grubu (veya -G ile belirtilen grup) root eşdeğerdir; bkz. Docker Daemon Saldırı Yüzey detayları ve bu blog yazısı Kök olmayan kullanıcıların Docker'ı CentOS, Fedora veya Rhel'de çalıştırmasına neden izin vermiyoruz (teşekkürler michael-n).
Son sürümde GitHub'da deneysel köksüz mod mühendisler, köksüz modun, user_namespaces (7), mount_namespaces (7), network_namespaces (7) kullanarak dockerd'yi imtiyazsız bir kullanıcı olarak çalıştırmasına izin verdiğini belirtiyor.
Kullanıcıların çalıştırması gerekiyor dockerd-rootless.sh dockerd yerine.
$ dockerd-rootless.sh --experimental
Köksüz mod deneysel olduğundan, kullanıcıların her zaman çalışması gerekir dockerd-rootless.sh deneysel.
Okumak önemlidir: Linux için kurulum sonrası adımlar (aynı zamanda aşağıdakilere de bağlanır Docker Daemon Saldırı Yüzey detayları).
Docker'ı root olmayan bir kullanıcı olarak yönetme
Docker daemon, TCP bağlantı noktası yerine bir Unıx soketine bağlanır. Varsayılan olarak, Unix soketi kullanıcı köküne aittir ve diğer kullanıcılar yalnızca sudo kullanarak erişebilir. Docker daemon her zaman kök kullanıcı olarak çalışır.
Docker komutunu kullandığınızda sudo kullanmak istemiyorsanız, docker adlı bir Unıx grubu oluşturun ve buna kullanıcı ekleyin. Docker daemon başlatıldığında, Unıx soketinin sahipliğini docker grubu tarafından okunabilir / yazılabilir hale getirir.
-
Zaten mevcut değilse docker grubunu ekleyin:
sudo groupadd docker
-
Bağlı kullanıcıyı "$USER" docker grubuna ekleyin. Geçerli kullanıcınızı kullanmak istemiyorsanız, kullanıcı adını tercih ettiğiniz kullanıcıyla eşleşecek şekilde değiştirin:
sudo gpasswd -a $USER docker
Ya bir tane yap newgrp docker
veya gruplardaki değişiklikleri etkinleştirmek için oturumu kapatın / oturum açın.
-
Kullanabilirsiniz
docker run hello-world
docker'ı sudo olmadan çalıştırıp çalıştıramayacağınızı kontrol etmek için.