Pada halaman dokumentasi Docker, semua perintah contoh ditampilkan tanpa sudo
, seperti ini:
docker ps
Di Ubuntu, biner disebut docker.io
. Itu juga tidak bekerja tanpa sudo:
sudo docker.io ps
Bagaimana saya bisa mengkonfigurasi Docker sehingga saya tidak perlu awalan setiap perintah Docker dengan sudo?
apt-cache policy docker-engine
(apt url seharusnya dari dockerproject.org)Jawaban:
Berita bagus: buruh pelabuhan baru (versi 19.03 (saat ini sedang dalam percobaan)) akan dapat menjalankan rootless meniadakan masalah yang dapat terjadi menggunakan pengguna root. Tidak perlu lagi mengacaukan izin, root, dan apa pun yang mungkin membuka mesin Anda ketika Anda tidak menginginkannya.
Video tentang ini dari [DockerCon 2019] Hardening Docker daemon dengan mode Rootless
Pada docker 19.3 ini sudah usang (dan lebih berbahaya dari yang seharusnya):
The pengguna buruh pelabuhan telah mengatakan tentang hal itu:
Penting untuk dibaca: langkah-langkah pasca-instalasi untuk Linux (ini juga menghubungkan ke rincian Docker Daemon Attack Surface ).
Tambahkan grup buruh pelabuhan jika belum ada:
Tambahkan pengguna yang terhubung "$ USER" ke grup buruh pelabuhan. Ubah nama pengguna agar cocok dengan pengguna pilihan Anda jika Anda tidak ingin menggunakan pengguna Anda saat ini:
Entah lakukan
newgrp docker
atau keluar / masuk untuk mengaktifkan perubahan ke grup.Anda dapat gunakan
untuk memeriksa apakah Anda dapat menjalankan buruh pelabuhan tanpa sudo.
sumber
newgrp docker
tidak bekerja untuk saya, saya harus keluar.docker login
, Anda mungkin menemukan bahwa.docker
folder yang dibuat di folder rumah Anda, milikroot
. dengan demikian Anda akan menemukan peringatan ini ketika menjalankan perintah buruh pelabuhan:WARNING: Error loading config file:/home/myuser/.docker/config.json - stat /home/myuser/.docker/config.json: permission denied
. Saya membuat saya pengguna.docker
folder diakses tanpa sudo seperti:sudo chgrp -hR docker ~/.docker && sudo chown -R myuser ~/.docker
. yangchgrp
tampaknya tidak membantu meskipun, jadi mungkin saya hanya harus merekomendasikan langkah chown.Untuk menjalankan perintah buruh pelabuhan tanpa
sudo
, Anda perlu menambahkan pengguna Anda (yang memiliki hak akses root) ke grup buruh pelabuhan. Untuk ini jalankan perintah berikut:Sekarang, minta pengguna logout lalu login lagi. Solusi ini dijelaskan dengan baik di sini dengan proses instalasi yang tepat.
sumber
Mekanisme di mana menambahkan pengguna ke grup
docker
memberikan izin untuk menjalankan buruh pelabuhan adalah untuk mendapatkan akses ke soket buruh pelabuhan di/var/run/docker.sock
. Jika sistem file yang berisi/var/run
telah dipasang dengan ACL diaktifkan, ini juga dapat dicapai melalui ACL.Saya hanya menyertakan ini untuk kelengkapan.
Secara umum, saya merekomendasikan untuk menghindari ACL setiap kali alternatif yang baik berdasarkan kelompok tersedia: Lebih baik jika hak istimewa dalam suatu sistem dapat dipahami dengan melihat keanggotaan grup saja. Harus memindai sistem file untuk entri ACL untuk memahami hak istimewa sistem adalah beban tambahan untuk audit keamanan.
Peringatan 1 : Ini memiliki
root
kesetaraan yang sama dengan menambahkanusername
kedocker
grup. Anda masih dapat memulai sebuah wadah dengan cara yang memilikiroot
akses ke sistem file host.Peringatan 2 : ACL secara signifikan lebih sulit untuk audit keamanan daripada keamanan berbasis grup. Mungkin hindari ACL jika memungkinkan saat Anda dapat menggunakan grup sebagai gantinya, setidaknya di lingkungan yang relevan dengan audit.
sumber