Cara Menggunakan Docker Sebagai Pengguna Non-Root Di Linux

Jika Anda ingin menggunakan Docker sebagai pengguna non-root di Linux, Anda perlu melakukan sedikit konfigurasi terlebih dahulu. Secara default, Docker mengharuskan pengguna menjadi bagian dari grup buruh pelabuhan untuk berinteraksi dengan daemon Docker.

Namun, Anda juga dapat mengonfigurasi Docker untuk mengizinkan setiap pengguna menjalankan perintah Docker dengan menambahkan pengguna ke grup Docker

Pada artikel ini, kami akan menunjukkan cara menambahkan pengguna ke grup Docker dan cara menggunakan Docker sebagai pengguna non-root di Linux.

Docker dapat dijalankan sebagai root di Linux. Untuk menggunakan Docker sebagai pengguna non-root, Anda harus menyertakan pengguna Docker Anda di grup Docker. Saat diminta untuk mengubah pengguna dalam wadah Docker, cukup masukkan -user *user. Saat menjalankan Docker Container, hal terbaik yang dapat Anda lakukan adalah membuat pengguna non-root sebagai mesin virtual. Pada 1 April 2009, 1,02 juta di antaranya ada. Pengguna root kontainer biasanya adalah orang yang melakukan fungsi root pada sistem host tradisional. Selama startup Docker, Anda dapat mengubah pengguna non-root menggunakan opsi -u atau -user. Kontainer Docker tidak dapat ditransfer antar host karena bukan kontainer. Jika Anda perlu mengubah image di container sebelum menjalankan Docker, Anda dapat mengubahnya di host lain lalu menjalankannya di container lain.

Untuk mengaktifkan semua kemampuan wadah atau pod, pengguna harus “menandai” itu sebagai aplikasi istimewa. Ketika sebuah wadah dalam mode hak istimewa, itu memberi tuan rumah semua yang dibutuhkan untuk menjalankannya.

Dalam kebanyakan kasus, soket Unix dimiliki oleh root pengguna, sehingga pengguna lain harus menggunakan sudo untuk mengaksesnya. Jika Anda memilih untuk mengelola Docker sebagai pengguna non-root, soket Unix dimiliki oleh root pengguna. Selama Anda menjalankan daemon Docker, Anda dapat mengakses ruang kerja Docker dari mana saja. Jika Anda tidak ingin mengawali perintah docker dengan sudo, tambahkan pengguna ke docker grup Unix.

Pengguna sistem sudo dapat menjalankan perintah langsung dari baris perintah dengan menggunakan fungsi akses root. Perintah tersebut adalah salah satu perintah yang paling berguna dan banyak digunakan di hampir semua distribusi Linux utama. Hampir pasti demikian. Di banyak distribusi Linux, terutama gambar Docker, pengiriman default paket sudo tidak dilakukan.

Saat daemon buruh pelabuhan dijalankan dalam mode tanpa akar, dimungkinkan untuk menentukan statusnya menggunakan info buruh pelabuhan: $ info buruh pelabuhan… Server: tanpa akar

Bisakah Docker Diinstal Tanpa Root?

: Komunitas DEV

Untuk melindungi runtime dan daemon container, daemon dan container Docker dapat dijalankan dalam mode tanpa root sebagai pengguna non-root. Dimungkinkan untuk menggunakan mode tanpa root bahkan setelah instalasi daemon Docker, selama prasyarat terpenuhi.

Haruskah Docker Dijalankan Sebagai Root?

: linuxhint.com

Karena risiko yang terkait dengan menjalankan wadah sebagai root, hal itu perlu dilakukan. Tidak ada hal seperti root dalam wadah, dan dimungkinkan untuk menolak sejumlah besar kemampuan saat berada dalam mode startup, tetapi itu masih merupakan pilihan terbaik untuk menghindari root selama startup kontainer (lebih detail tentang ini nanti).

Semua langkah instalasi dan unduhan file Anda harus dijalankan sebagai root (beberapa langkah ini akan dijalankan sebagai ekstensi). Ketika sebuah proses diizinkan untuk keluar dari wadah tanpa kehadiran mekanisme keamanan, lebih mudah untuk mendapatkan akses ke host. Sebelum penampung Anda dapat dijalankan sebagai pengguna non-root, Anda harus membuatnya secara eksplisit dan memberinya hak istimewa yang diperlukan. Akibatnya, jika Anda memiliki proses jahat yang berjalan di dalam penampung Anda, perilakunya akan dibatasi.

Pembatasan Pada Kontainer Linux

Namun, ini tidak selalu terjadi. Saat Anda membuat wadah baru di Ubuntu 18.04, pengguna yang Anda tentukan dibuat secara otomatis.

Pengguna ini memiliki hak istimewa penuh di komputer dan memiliki kemampuan untuk menjalankan perintah apa pun yang tidak ada dalam daftar pengguna yang dibatasi

Jika Anda ingin membatasi hak istimewa penampung hanya yang diberikan oleh pengguna root, Anda dapat membuat pengguna penampung baru dan memberinya peran pengguna root. Jika Anda ingin menggunakan pengguna yang ditentukan saat memulai wadah, Anda dapat menggunakan flag –user.

Apa Itu Wadah Non-root?

Kredit

Wadah non-root adalah proses terisolasi yang berjalan pada kernel bersama. Kontainer non-root tidak memiliki akses ke kernel, dan karena itu tidak dapat menjalankan operasi istimewa.

Dalam wadah Docker, hak akses root biasanya merupakan default. Sebagai penampung, Anda dapat menjalankan proses sebagai root sehingga Anda dapat mengubah pengguna. Saat memulai penampung, gunakan id grup (GID) atau id (UID). Anda menempatkan aplikasi Anda di posisi ini, dan itu akan menjadi rentan. Mengubah konfigurasi wadah Anda untuk dijalankan sebagai non-root juga memberikan lapisan keamanan tambahan. Kontainer dapat dijalankan sebagai non-root saat kode berbahaya tidak dapat memperoleh akses ke host. Akibatnya, bahkan mereka yang telah mengakses container Anda melalui Docker Hub tidak diizinkan untuk mendapatkan akses penuh ke server Anda.

Beberapa distribusi Kubernetes, seperti Openshift, tidak mendukung akses root ke container. Beberapa wadah infrastruktur di Bitnami telah di-root. Selain metode ini, Anda dapat menggunakan Docker dan Kubernetes untuk mengamankan container Anda. Kami akan menunjukkan cara mengubah wadah root menjadi wadah non-Root.

Manfaat Kontainer Non-istimewa

Kontainer yang tidak diistimewakan ideal untuk aplikasi kotak pasir dan mengisolasinya dari bagian sistem lainnya. Dimungkinkan untuk menjalankan aplikasi dalam wadah non-istimewa, seperti server web, server basis data, dan server aplikasi.

Docker Non Root

Docker adalah alat yang memungkinkan pengembang untuk dengan mudah membuat, menyebarkan, dan menjalankan aplikasi dalam wadah. Kontainer adalah lingkungan mandiri dan terisolasi yang berisi semua file dan dependensi yang diperlukan untuk menjalankan aplikasi.

Karena setiap container diisolasi dari yang lain, container dapat dijalankan di semua platform, termasuk Windows, Mac, dan Linux

Docker sering digunakan untuk aplikasi web, yang dapat dijalankan dalam wadah di server mana pun. Docker juga digunakan untuk mengembangkan aplikasi, yang dapat dijalankan dalam wadah di mesin lokal pengembang. Docker dapat dijalankan sebagai pengguna non-root, tetapi pengguna harus memiliki hak istimewa sudo untuk menjalankan perintah Docker.

Dalam hal ini, daemon Docker harus dijalankan dalam mode non-root. Anda harus menginstal newuidmap dan newgidmap di host. Untuk menginstal Linux kernel.unclone_userns_privileged=1, masuk ke /etc/sysctl. Itu dapat dijalankan di Ubuntu 18, 20, atau 22,04 LTS. Jika Anda memiliki Docker 20.10 atau lebih baru dan memiliki paket RPM/DEB, Anda harus menggunakan dockerd-rootless-toolsetup.sh di /usr/bin. Tergantung pada konfigurasinya, ini juga mungkin diperlukan pada sistem operasi lain. Jalankan sudo sysctl –system sebagai berikut: Tambahkan user.max_user_namespaces =28633 ke /etc/sysctl.d.

Ini bukan solusi yang tersedia secara otomatis. Jika Anda memiliki izin untuk menjalankan apt-get dan dnf, skrip instalasi di https://get.docker.com/rootless dapat digunakan. Untuk mengekspos Docker API, Dockerd-rootless harus diluncurkan. Tambahkan net.ipv4.ping_group_range ke /etc/sysctl.d dengan menyalin 0 2147483647 ke net.ipv4.ping_group_range. Untuk mengekspos port istimewa, luncurkan biner rootlesskit dan setel nama layanan ke CAP_NET_BIND_SERVICE. Buat direktori di server non-tier, lalu tentukan jalur mana yang akan diambil. Ketika SELinux diaktifkan di host, kesalahan ini mungkin terjadi dengan versi Docker yang lebih lama.

Ada cara untuk menghindari penggunaan direktori akar data NFS di Dockerfile Anda dengan menentukannya. Ketika port istimewa ditentukan sebagai port host, docker run -p gagal dijalankan. Anda juga dapat menggunakan port yang tidak memiliki hak istimewa daripada yang memiliki hak istimewa. Ping gagal saat Ping_group_range diatur ke 1 0 di /proc/sys/net/ipv4/ping_group_range. Tambalan ke slirp4netns dapat membantu meningkatkan kinerja jaringan.

Jalankan Docker Tanpa Sudo

Dimungkinkan untuk menjalankan Docker tanpa sudo dengan menambahkan pengguna saat ini ke grup buruh pelabuhan. Ini dapat dilakukan dengan menjalankan perintah berikut: sudo usermod -aG docker $USER. Setelah menambahkan pengguna saat ini ke grup buruh pelabuhan, keluar dan masuk kembali agar perubahan diterapkan. Setelah pengguna saat ini ditambahkan ke grup docker, mereka akan dapat menjalankan perintah Docker tanpa menggunakan sudo.

Contoh Pengguna Dockerfile Non Root

Contoh pengguna non-root untuk dockerfile dapat ditemukan di bawah. Ini akan membuat pengguna dengan UID dan GID 1000, dan akan menambahkannya ke grup sudo.

DARI ubuntu:16.04 RUN useradd -u 1000 -g sudo nonroot USER nonroot

Dalam wadah Docker, sistem operasi default untuk suatu aplikasi adalah memiliki semua hak istimewanya. Akibatnya, keamanan aplikasi sangat terganggu. Artikel ini akan membahas dua metode bagi pengguna non-root untuk mengakses container Docker. Dengan flag -u, Docker menjalankan perintah Docker run untuk menambahkan pengguna dengan nama ke direktori Docker Docker. Saat menjalankan Docker Container yang terkait dengan image, instruksi USER digunakan untuk menentukan pengguna mana yang akan login. Sebagian besar pengguna Docker lupa atau tidak menganggap perlu untuk mengubah hak pengguna mereka.

Jalankan Docker Daemon Ubuntu

Untuk menjalankan daemon Docker di Ubuntu, Anda harus menginstal paket Docker terlebih dahulu. Setelah instalasi selesai, Anda dapat memulai daemon Docker dengan menjalankan perintah berikut:

sudo service docker start Anda kemudian dapat menggunakan klien Docker untuk menjalankan kontainer di sistem Ubuntu Anda.

Untuk memulai, Anda harus mengonfigurasi daemon Docker terlebih dahulu. Selain itu, daemon Docker dapat dimulai dan dikonfigurasi secara manual dengan flag. Ini dapat digunakan untuk memecahkan masalah atau hanya untuk menguji berbagai hal. Opsi konfigurasi data-root memungkinkan Anda mengubah direktori daemon Docker ke lokasi lain. Jika Anda berbagi direktori dengan dua daemon, seperti berbagi NFS, Anda akan mengalami kesalahan yang sulit dipecahkan. Sinyal SIGUSR juga dapat digunakan untuk memaksa pelacakan tumpukan penuh dari semua utas ke dalam log daemon.

Docker, distribusi Docker, adalah alat yang populer untuk manajemen kontainer. Dengan menggunakan fitur ini, Anda dapat menjalankan aplikasi yang terisolasi di atas sistem operasi yang sudah ada.

Docker dapat digunakan untuk menjalankan wadah dalam mode terpisah. pemecahan masalah masalah Dimungkinkan untuk menghindari intrusi sistem dengan menjalankan wadah terpisah dari lingkungan normal. Fitur ini mungkin berguna jika Anda mencoba memecahkan masalah.

Anda dapat memulai wadah dalam mode terpisah dengan menggunakan flag -d. Dalam contoh ini, Anda akan menggunakan perintah berikut untuk memulai wadah bernama halo dalam mode terpisah. docker run -d -hel lo.

Daemon Docker juga dapat dikonfigurasi secara manual di MacOS menggunakan flag. Ini dapat membantu memecahkan masalah. Dokumentasi Docker menguraikan sejumlah opsi konfigurasi yang berbeda.

Izin Docker Ditolak

Jika Anda mendapatkan kesalahan “izin ditolak” saat mencoba menjalankan perintah Docker, kemungkinan Anda tidak masuk sebagai pengguna dengan izin yang sesuai. Untuk memperbaikinya, Anda dapat menambahkan pengguna Anda ke grup “buruh pelabuhan”, atau menggunakan perintah “sudo” untuk menjalankan perintah Docker sebagai pengguna super.

Saya ditolak izinnya setelah memutakhirkan. Solusi ini dikonfirmasi setelah satu jam pencarian. Solusinya ditawarkan oleh Olshansk. Sebagai hasil dari pemutakhiran, soket telah dibuat ulang tanpa izin dari grup ‘buruh pelabuhan’. Itu terjadi setiap kali hard chmod digunakan, karena lubang keamanan dibuka, dan ini terjadi setiap kali dilakukan reboot. Untuk mengubah izin file kaus kaki, Anda hanya perlu mengubah izinnya. Cara ini pasti berhasil.

Asclepius 51.5k14 lencana emas148 lencana perak131 terbuat dari lencana perunggu. Jika ini tidak berhasil, Anda dapat menggunakan baris perintah chmod 660 /var/run/docker.sock. Soket unix yang saya miliki bukan milik saya, jadi saya memakannya. Karena izinnya, chmod 666 adalah ide yang buruk karena memungkinkan hampir semua pengguna untuk memodifikasi dan mengakses buruh pelabuhan. Platform lightDM dan kwallet dipengaruhi oleh bug yang mencegah grup tambahan diaktifkan saat login. Di /etc/lightdm, saya juga harus berkomentar untuk mengatasi masalah ini. Anda harus me-restart komputer saat menginstal Docker dan Docker-compose untuk menghindari masalah ini.

Tidak ada keraguan bahwa itu akan diperlukan selain prosedur booting. Dengan mengunduh dan menginstal file /etc/init/docker-chmod.conf, Anda dapat mengonfigurasinya untuk boot secara otomatis. Jika Anda tidak ingin mengawali perintah docker dengan sudo, Anda dapat membuat grup Unix bernama docker dan menyertakan pengguna di dalamnya. Saat daemon Docker dimulai, anggota grup Docker mendapatkan akses ke soket Unix yang dibuat oleh daemon. Anda harus keluar dan masuk kembali agar keanggotaan grup diperiksa ulang. Anda dapat menyelesaikan ini dengan menghapus atau dengan menggantinya dengan satu. Direktori docker/ (dibuat ulang secara otomatis, tetapi semua pengaturan kustom hilang) atau panel kontrol/ izin dapat diubah menggunakan perintah berikut. Kumpulan langkah lengkap untuk menginstal Docker di Linux dapat ditemukan di sini.

Cara Menemukan Pid Dari Containe Yang Sedang Berjalan

Perintah berikut akan memberi tahu kita cara menemukan PID container yang sedang berjalan.

P singkatan dari “fase awal.” Nama_penampung adalah nama penampung; br adalah nomor wadah. Perintah nsenter akan digunakan untuk mengakses wadah Docker yang sedang berjalan bernama demo dalam contoh ini. Perintah ini digunakan untuk menjalankan perintah nsenter sebagai root.

Anda dapat memulai proses nsenter -u root -P dengan menekan tombol nsenter -u root -P.

Related Posts