GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Cara melakukan Instalasi Rootless Docker (di Ubuntu dan Debian)

Apa itu Docker tanpa root?

Biasanya, ketika Anda menginstal Docker, diperlukan izin penuh (root) pada sistem host. Ini menciptakan masalah keamanan potensial karena container dan layanan Docker (daemon) akan berfungsi sebagai root. Dalam instalasi Docker tanpa root, hanya daemon Docker yang berjalan sebagai root sedangkan container berjalan sebagai pengguna biasa.

Mengapa itu penting? Karena jika layanan yang berjalan dalam wadah terganggu, penyerang dapat mengakses file sistem juga. Tidak ada isolasi wadah yang nyata.

Proyek Podman open source dibuat untuk menjalankan container tanpa root. Hal ini memberi tekanan pada Docker untuk mendukung fitur serupa sehingga container berjalan sebagai pengguna normal tetapi layanan Docker (daemon) berfungsi sebagai root.

Instalasi tanpa root ini sekarang tersedia dari Docker sendiri dan Anda tidak perlu menggunakan Podman hanya untuk fitur ini.

Pada artikel ini, saya akan menjelaskan cara menginstal Docker tanpa akses root. Tapi sebelum saya tunjukkan langkah-langkahnya, mari kita bahas dulu kelemahan mode ini.

Kerugian menjalankan Docker dalam mode rootless

Kelemahan terbesar dari mode ini adalah jaringan, dan masalah ini juga ada di Podman.

Secara default, Docker menggunakan jaringan tanpa root.

Karena tercepat, dengan kecepatan hingga 30 Gbps dan mendukung IPv4 dan IPv6.

Tapi ada masalah.

Penampung tidak akan memiliki IP eksternal permintaan, dan semua permintaan akan muncul dari 127.0.0.1.

Ini adalah masalah besar, terutama jika, Anda ingin memasang perlindungan yang membatasi serangan distributed denial-of-service (DDOS) karena semua permintaan tampaknya berasal dari alamat yang sama.

Menggunakan mode Slirp4netns memecahkan masalah ini, dan menunjukkan alamat asli permintaan. Tapi itu juga memiliki dua masalah.

  • IPv6 tidak didukung.
  • Kecepatannya jauh lebih lambat (sekitar 7Gbps).

Prasyarat

Mode rootless tidak menggunakan bit yang lengket. Mereka membutuhkan newuidmap dan newgidmap .

Inilah sebabnya mengapa Anda harus memastikan bahwa paket newuidmap dan newgidmap diinstal (melalui paket uidmap) dan ada 65.536 id anak.

peta newuid memverifikasi bahwa penelepon adalah pemilik proses yang ditunjukkan oleh pid .

id -u
1001
whoami
testuser

Selanjutnya, periksa apakah pengguna memiliki 65.536 sub UID:

grep ^$(whoami): /etc/subuid
testuser:231072:65536
grep ^$(whoami): /etc/subgid
testuser:231072:65536

Apa arti angka-angka ini? Nomor pertama adalah id pertama yang diizinkan untuk digunakan dan yang berikutnya memberi tahu berapa banyak id yang Anda miliki. Misalnya dimulai dengan 231072, id 0 berarti 231072 dan id 1000 berarti 241072.

Instal dbus-user-session dan lapisan sekering paket.

Untuk Debian, gunakan perintah untuk menginstal dbus-user-session:

sudo apt install -y dbus-user-session

Dan kemudian instal fuse-overlayfs:

sudo apt install -y fuse-overlayfs

Disarankan untuk menggunakan Kernel 5.11 atau yang lebih baru.

Menginstal buruh pelabuhan dalam mode tanpa akar

Sekarang Anda sampai pada bagian utama. Bagian pertama adalah instalasi Docker normal dan kemudian pergi dengan bagian rootless.

Saya akan menunjukkan langkah-langkah untuk Ubuntu.

Instal paket Docker biasa

Copot pemasangan paket Docker yang ada terlebih dahulu:

 sudo apt remove docker docker-engine docker.io containerd runc

Dan kemudian instal Docker di Ubuntu:

 sudo apt update
 sudo apt install docker-ce docker-ce-cli containerd.io

Verifikasi bahwa Docker Engine diinstal dengan benar dengan menjalankan image hello-world.

sudo docker run hello-world

Mengingat daemon Docker sudah berjalan, nonaktifkan dulu.

sudo systemctl disable --now docker.service docker.socket

Instal paket tanpa root

Sekarang instal paket docker-ce-rootless-extras dengan mengunduh skrip resmi menggunakan perintah curl:

curl -fsSL https://get.docker.com/rootless | sh

Ikuti saran di layar dan Anda akan menginstal Docker tanpa root.

Di akhir layar penginstalan ini, akan ada dua hal yang tertulis:export=xxx

Salin dan tempel ke file .bashrc terakhir atau jika Anda menggunakan ZSH, file .zshrc. Sumber file rc yang baru saja Anda ubah.

Setelah instalasi selesai, jalankan daemon docker rootless:

 systemctl --user start docker

Jalankan buruh pelabuhan tanpa akar secara otomatis di setiap startup:

systemctl --user enable docker
sudo loginctl enable-linger $(whoami)

Nikmati.

Info Penulis:Mead Naji adalah pengembang web dan pengembang Linux jadul.


Docker
  1. Cara menginstal Docker di Debian / Ubuntu

  2. Cara Menginstal dan Menggunakan Docker di Ubuntu 20.04

  3. Cara menginstal dan mengkonfigurasi buruh pelabuhan di Debian 11

  1. Cara Menginstal dan Menggunakan Docker di Ubuntu 20.04

  2. Cara Menginstal Netflix di Kodi di Ubuntu dan Debian

  3. Cara Menginstal Docker dan Menjalankan Wadah Docker di Ubuntu

  1. Cara menginstal Docker di Ubuntu 22.04

  2. Cara Menginstal dan Menggunakan Docker di Ubuntu 18.04

  3. Cara Menginstal dan Menggunakan Docker Compose di Ubuntu 18.04