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
Beberapa Peringatan terhadap mode Docker tak menentu
Insinyur Docker mengatakan mode tidak menentu tidak dapat dianggap sebagai pengganti rangkaian lengkap fitur engine Docker. Beberapa batasan untuk mode tidak menentu meliputi:
- kontrol sumber daya cgroups, profil keamanan apparmor, pos pemeriksaan / pengembalian, jaringan overlay dll. tidak berfungsi pada mode tidak menentu.
- Mengekspos port dari kontainer saat ini membutuhkan proses bantuan socat manual.
- Hanya distro berbasis Ubuntu yang mendukung overlay sistem file dalam mode tanpa akar.
- Mode tanpa akar saat ini hanya disediakan untuk bangunan malam yang mungkin tidak stabil seperti biasanya.
Pada docker 19.3 ini sudah usang (dan lebih berbahaya dari yang seharusnya):
The pengguna buruh pelabuhan telah mengatakan tentang hal itu:
Memberikan akses non-root
Daemon docker selalu berjalan sebagai pengguna root, dan karena Docker versi 0.5.2, daemon docker mengikat ke soket Unix alih-alih port TCP. Secara default, soket Unix dimiliki oleh root pengguna, jadi, secara default, Anda dapat mengaksesnya dengan sudo.
Mulai dalam versi 0.5.3, jika Anda (atau pemasang Docker Anda) membuat grup Unix yang disebut buruh pelabuhan dan menambahkan pengguna ke dalamnya, maka daemon buruh pelabuhan akan membuat kepemilikan soket Unix dibaca / dapat ditulis oleh grup buruh pelabuhan ketika daemon dimulai . Daemon buruh pelabuhan harus selalu dijalankan sebagai pengguna root, tetapi jika Anda menjalankan klien buruh pelabuhan sebagai pengguna dalam grup buruh pelabuhan maka Anda tidak perlu menambahkan sudo ke semua perintah klien. Pada 0.9.0, Anda dapat menentukan bahwa grup selain buruh pelabuhan harus memiliki soket Unix dengan opsi -G.
Peringatan: Grup buruh pelabuhan (atau grup yang ditentukan dengan -G) setara dengan root; lihat detail Docker Daemon Attack Surface dan blogpost ini tentang Mengapa kami tidak membiarkan pengguna non-root menjalankan Docker di CentOS, Fedora, atau RHEL (terima kasih michael-n).
Dalam rilis terbaru dari mode tak menentu eksperimental di GitHub , insinyur menyebutkan mode tak menentu memungkinkan menjalankan dockerd sebagai pengguna yang tidak terjangkau, menggunakan user_namespaces (7), mount_namespaces (7), network_namespaces (7).
Pengguna perlu menjalankan dockerd-rootless.sh alih-alih dockerd.
$ dockerd-rootless.sh --experimental
Karena mode Rootless bersifat eksperimental, pengguna harus selalu menjalankan dockerd-rootless.sh dengan –experimental.
Penting untuk dibaca: langkah-langkah pasca-instalasi untuk Linux (ini juga menghubungkan ke rincian Docker Daemon Attack Surface ).
Kelola Docker sebagai pengguna non-root
Daemon docker mengikat ke soket Unix, bukan port TCP. Secara default, soket Unix dimiliki oleh root pengguna dan pengguna lain hanya dapat mengaksesnya menggunakan sudo. Daemon buruh pelabuhan selalu berjalan sebagai pengguna root.
Jika Anda tidak ingin menggunakan sudo ketika Anda menggunakan perintah buruh pelabuhan, buat grup Unix yang disebut buruh pelabuhan dan tambahkan pengguna ke dalamnya. Ketika daemon docker dimulai, itu membuat kepemilikan soket Unix terbaca / dapat ditulis oleh grup buruh pelabuhan.
Tambahkan grup buruh pelabuhan jika belum ada:
sudo groupadd docker
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:
sudo gpasswd -a $USER docker
Entah lakukan newgrp docker
atau keluar / masuk untuk mengaktifkan perubahan ke grup.
Anda dapat gunakan
docker run hello-world
untuk memeriksa apakah Anda dapat menjalankan buruh pelabuhan tanpa sudo.