GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Jak provést instalaci Rootless Docker (na Ubuntu a Debianu)

Co je rootless Docker?

Normálně, když instalujete Docker, potřebuje plná oprávnění (root) na hostitelském systému. To vytváří potenciální bezpečnostní problém, protože kontejnery i služba (démon) Docker budou fungovat jako root. V instalaci Dockeru bez rootu běží jako root pouze démon Docker, zatímco kontejnery běží jako normální uživatelé.

Proč tě to zajímá? Protože pokud dojde ke kompromitaci služby běžící v kontejneru, útočník se může dostat také k systémovým souborům. Neexistuje žádná skutečná izolace kontejnerů.

Open source projekt Podman byl vytvořen, aby primárně spouštěl kontejnery bez root. To vyvinulo tlak na Docker, aby podporoval podobnou funkci, takže kontejnery běží jako běžní uživatelé, ale služba Docker (démon) funguje jako root.

Tato instalace bez rootu je nyní dostupná od samotného Dockeru a nemusíte používat Podman jen pro tuto funkci.

V tomto článku vysvětlím, jak nainstalovat Docker bez přístupu root. Než vám však tyto kroky ukážu, proberme nejprve nevýhodu tohoto režimu.

Nevýhoda spuštění Dockeru v režimu bez root

Největší nevýhodou tohoto režimu je síť a tyto problémy se vyskytují i ​​v Podmanu.

Ve výchozím nastavení používá Docker síť bez root.

Protože je nejrychlejší, s rychlostí až 30 Gbps a podporuje IPv4 a IPv6.

Ale má problémy.

Kontejnery nebudou mít externí IP adresu požadavku a všechny požadavky se objeví od 127.0.0.1.

To je velký problém, zvláště pokud chcete zavést ochranu, která omezuje distribuované útoky denial-of-service (DDOS), protože se bude zdát, že všechny požadavky pocházejí ze stejné adresy.

Použití režimu Slirp4netns tento problém vyřeší a zobrazí původní adresu požadavku. Má to ale také dva problémy.

  • IPv6 není podporován.
  • Rychlost je mnohem nižší (asi 7 Gb/s).

Předpoklady

Režim bez kořenů nepoužívá lepivé bity. Potřebují newuidmap a newgidmap .

To je důvod, proč byste se měli ujistit, že jsou nainstalovány balíčky newuidmap a newgidmap (prostřednictvím balíčku uidmap) a že existuje 65 536 podřízených ID.

newuidmap ověří, že volající je vlastníkem procesu označeného pid .

id -u
1001
whoami
testuser

Dále zkontrolujte, zda má uživatel 65 536 dílčích UID:

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

Co tato čísla znamenají? První číslo je první id, které je povoleno používat, a další říká, kolik id máte. Například začíná 231072, id 0 znamená 231072 a id 1000 znamená 241072.

Nainstalujte dbus-user-session a fuse-overlayfs balíčky.

Pro Debian použijte k instalaci dbus-user-session příkaz:

sudo apt install -y dbus-user-session

A poté nainstalujte fuse-overlayfs:

sudo apt install -y fuse-overlayfs

Doporučuje se používat jádro 5.11 nebo novější.

Instalace dockeru v režimu bez root

Nyní se dostáváte k hlavní části. První částí je normální instalace Dockeru a poté přejděte na část bez root.

Ukážu kroky pro Ubuntu.

Instalace obvyklých balíčků Docker

Nejprve odinstalujte jakýkoli existující balíček Docker:

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

A pak nainstalujte Docker na Ubuntu:

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

Ověřte, zda je Docker Engine správně nainstalován, spuštěním obrazu hello-world.

sudo docker run hello-world

Vzhledem k tomu, že démon Docker již běží, nejprve jej deaktivujte.

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

Instalace balíčku rootless

Nyní nainstalujte balíček docker-ce-rootless-extras stažením oficiálního skriptu pomocí příkazu curl:

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

Postupujte podle návrhů na obrazovce a budete mít nainstalován rootless Docker.

Na konci této instalační obrazovky budou napsány dvě věci:export=xxx

Zkopírujte je a vložte do posledního souboru .bashrc, nebo pokud používáte ZSH, do souboru .zshrc. Zdroj rc souborů, které jste právě změnili.

Po dokončení instalace spusťte daemon docker rootless:

 systemctl --user start docker

Spustit rootless docker automaticky při každém spuštění:

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

Užijte si to.

Informace o autorovi:Mead Naji je webový vývojář a starý linuxový vývojář.


Docker
  1. Jak nainstalovat Docker na Debian / Ubuntu

  2. Jak nainstalovat a používat Docker v Ubuntu 20.04

  3. Jak nainstalovat Docker a spustit kontejnery Docker v Ubuntu

  1. Jak nainstalovat a používat Docker na Ubuntu 20.04

  2. Jak nainstalovat Netflix v Kodi na Ubuntu a Debian

  3. Jak nainstalovat a nakonfigurovat docker na Debian 11

  1. Jak nainstalovat Docker na Ubuntu 22.04

  2. Jak nainstalovat a používat Docker na Ubuntu 18.04

  3. Jak nainstalovat a používat Docker Compose na Ubuntu 18.04