Kabar baik: docker baru (versi 19.03 (saat ini eksperimental)) akan dapat menjalankan tanpa akar meniadakan masalah yang dapat terjadi menggunakan pengguna root. Tidak ada lagi bermain-main dengan izin tinggi, akar dan apa pun yang mungkin membuka mesin Anda ketika Anda tidak ingin.
Video tentang ini dari [DockerCon 2019] pengerasan daemon Docker dengan mode tanpa akar
Beberapa peringatan ke mode buruh pelabuhan tanpa akar
Insinyur Docker mengatakan mode tanpa akar tidak dapat dianggap sebagai pengganti rangkaian lengkap fitur mesin Docker. Beberapa batasan untuk mode tanpa akar meliputi:
- kontrol sumber daya cgroups, profil keamanan apparmor, pos pemeriksaan/pemulihan, jaringan overlay, dll. jangan bekerja pada mode tanpa akar.
- Mengekspos port dari kontainer saat ini membutuhkan proses pembantu socat manual.
- Hanya distro berbasis Ubuntu yang mendukung sistem file overlay dalam mode tanpa akar.
- Mode tanpa akar saat ini hanya disediakan untuk Build malam yang mungkin tidak stabil seperti biasanya.
Pada docker 19.3 ini sudah usang (dan lebih berbahaya dari yang dibutuhkan):
The docker manual apakah ini mengatakan tentang hal itu:
Memberikan akses non-root
Daemon docker selalu berjalan sebagai pengguna root, dan sejak Docker versi 0.5.2, daemon docker mengikat ke soket Unix alih-alih port TCP. Secara default bahwa soket Unix dimiliki oleh root pengguna, dan, secara default, Anda dapat mengaksesnya dengan sudo.
Mulai dari versi 0.5.3, jika Anda (atau penginstal Docker Anda) membuat grup Unix yang disebut docker dan menambahkan pengguna ke dalamnya, maka daemon docker akan membuat kepemilikan soket Unix dibaca/ditulis oleh grup docker ketika daemon dimulai. Daemon docker harus selalu dijalankan sebagai pengguna root, tetapi jika Anda menjalankan klien docker sebagai pengguna di grup docker maka Anda tidak perlu menambahkan sudo ke semua perintah klien. Pada 0.9.0, Anda dapat menentukan bahwa grup selain docker harus memiliki soket Unix dengan opsi-G.
Peringatan: grup buruh pelabuhan (atau grup yang ditentukan dengan-G) setara dengan root; lihat Detail permukaan serangan daemon Docker dan blogpost ini di Mengapa kami tidak membiarkan pengguna non-root menjalankan Docker di CentOS, Fedora, atau RHEL (terima kasih michael-n).
Dalam rilis terbaru dari mode tanpa akar eksperimental di GitHub, insinyur menyebutkan mode tanpa akar memungkinkan menjalankan dockerd sebagai pengguna yang tidak memiliki hak istimewa, menggunakan user_namespaces(7), mount_namespaces(7), network_namespaces(7).
Pengguna harus menjalankan dockerd-rootless.sh alih-alih dockerd.
$ dockerd-rootless.sh --experimental
Karena Mode Tanpa Akar bersifat eksperimental, pengguna harus selalu menjalankan dockerd-rootless.sh dengan-eksperimental.
Penting untuk dibaca: langkah pasca instalasi untuk Linux (ini juga link ke Detail permukaan serangan daemon Docker).
Mengelola Docker sebagai pengguna non-root
Daemon docker mengikat ke soket Unix alih-alih port TCP. Secara default soket Unix dimiliki oleh root pengguna dan pengguna lain hanya dapat mengaksesnya menggunakan sudo. Daemon docker selalu berjalan sebagai pengguna root.
Jika Anda tidak ingin menggunakan sudo saat menggunakan perintah docker, Buat Grup Unix bernama docker dan tambahkan pengguna ke dalamnya. Ketika daemon docker dimulai, itu membuat kepemilikan soket Unix dibaca / ditulis oleh grup docker.
-
Tambahkan grup docker jika belum ada:
sudo groupadd docker
-
Tambahkan pengguna terhubung"$USER & quot; ke grup docker. Mengubah nama pengguna untuk mencocokkan pengguna pilihan Anda jika Anda tidak ingin menggunakan pengguna Anda saat ini:
sudo gpasswd -a $USER docker
Baik melakukan newgrp docker
atau log out / in untuk mengaktifkan perubahan ke grup.
-
Anda dapat menggunakan
docker run hello-world
untuk memeriksa apakah Anda dapat menjalankan docker tanpa sudo.