GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Comment faire une installation Docker sans racine (sur Ubuntu et Debian)

Qu'est-ce que Docker sans racine ?

Normalement, lorsque vous installez Docker, il nécessite des autorisations complètes (racine) sur le système hôte. Cela crée un problème de sécurité potentiel car les conteneurs et le service Docker (démon) fonctionneront en tant que root. Dans l'installation sans racine de Docker, seul le démon Docker s'exécute en tant que root tandis que les conteneurs s'exécutent en tant qu'utilisateurs normaux.

En quoi est-ce important? Parce que si le service exécuté dans un conteneur est compromis, l'attaquant peut également accéder aux fichiers système. Il n'y a pas de véritable isolement des conteneurs.

Le projet open source Podman a été créé pour exécuter principalement des conteneurs sans racine. Cela a poussé Docker à prendre en charge une fonctionnalité similaire afin que les conteneurs s'exécutent en tant qu'utilisateurs normaux, mais que le service Docker (démon) fonctionne en tant que root.

Cette installation sans racine est désormais disponible à partir de Docker lui-même et vous n'avez pas besoin d'utiliser Podman uniquement pour cette fonctionnalité.

Dans cet article, je vais vous expliquer comment installer Docker sans accès root. Mais avant de vous montrer ces étapes, discutons d'abord de l'inconvénient de ce mode.

Inconvénient d'exécuter Docker en mode sans racine

Le plus gros inconvénient de ce mode est le réseau, et ces problèmes sont également présents dans Podman.

Par défaut, Docker utilise un réseau sans racine.

Parce qu'il est le plus rapide, avec une vitesse allant jusqu'à 30 Gbit/s et prend en charge IPv4 et IPv6.

Mais il y a des problèmes.

Les conteneurs n'auront pas l'adresse IP externe de la demande et toutes les demandes apparaîtront à partir de 127.0.0.1.

C'est un gros problème, surtout si vous voulez mettre en place une protection qui limite les attaques par déni de service distribué (DDOS) car toutes les requêtes sembleront provenir de la même adresse.

L'utilisation du mode Slirp4netns résout ce problème et affiche l'adresse d'origine de la requête. Mais il a aussi deux problèmes.

  • IPv6 non pris en charge.
  • La vitesse est beaucoup plus lente (environ 7 Gbit/s).

Prérequis

Le mode sans racine n'utilise pas les bits collants. Ils ont besoin de newuidmap et newgidmap .

C'est pourquoi vous devez vous assurer que les packages newuidmap et newgidmap sont installés (via le package uidmap) et qu'il existe 65 536 ID enfants.

nouveauuidmap vérifie que l'appelant est le propriétaire du processus indiqué par pid .

id -u
1001
whoami
testuser

Ensuite, vérifiez que l'utilisateur dispose de 65 536 sous-UID :

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

Que signifient ces chiffres ? Le premier numéro est le premier identifiant autorisé à utiliser et le suivant indique combien d'identifiants avez-vous. Par exemple, il commence par 231072, id 0 signifie 231072 et id 1000 signifie 241072.

Installez la dbus-user-session et fuse-overlayfs colis.

Pour Debian, utilisez la commande pour installer dbus-user-session :

sudo apt install -y dbus-user-session

Et puis installez fuse-overlayfs :

sudo apt install -y fuse-overlayfs

Il est recommandé d'utiliser le noyau 5.11 ou une version ultérieure.

Installer Docker en mode sans racine

Vous arrivez maintenant à la partie principale. La première partie est l'installation normale de Docker, puis la partie sans racine.

Je vais montrer les étapes pour Ubuntu.

Installer les packages Docker habituels

Désinstallez d'abord tout package Docker existant :

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

Et puis installez Docker sur Ubuntu :

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

Vérifiez que Docker Engine est correctement installé en exécutant l'image hello-world.

sudo docker run hello-world

Considérant que le démon Docker est déjà en cours d'exécution, désactivez-le d'abord.

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

Installer le package sans racine

Installez maintenant le package docker-ce-rootless-extras en téléchargeant le script officiel à l'aide de la commande curl :

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

Suivez les suggestions à l'écran et vous aurez installé Docker sans racine.

À la fin de cet écran d'installation, il y aura deux choses écrites :export=xxx

Copiez-les et collez-les dans le dernier fichier .bashrc ou, si vous utilisez ZSH, le fichier .zshrc. Sourcez les fichiers rc que vous venez de modifier.

Une fois l'installation terminée, lancez le démon docker rootless :

 systemctl --user start docker

Exécutez docker sans racine automatiquement à chaque démarrage :

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

Profitez-en.

Informations sur l'auteur :Mead Naji est un développeur Web et un développeur Linux à l'ancienne.


Docker
  1. Comment installer et utiliser Docker sur Ubuntu 20.04

  2. Comment installer Docker sur Debian / Ubuntu

  3. Comment installer et utiliser Docker dans Ubuntu 20.04

  4. Comment installer et configurer docker sur Debian 11

  5. Comment installer Docker et exécuter des conteneurs Docker dans Ubuntu

Comment installer et utiliser Docker Compose sur Ubuntu 20.04

Comment installer et utiliser Docker Compose sur Ubuntu 22.04

Comment installer et utiliser Docker sur Ubuntu 22.04

Comment installer Docker Compose sur Ubuntu

Comment installer et utiliser Docker sur Ubuntu 20.04

Comment installer Grafana sur Ubuntu 18.04 et Debian 8