Docker sans racine

Docker Sans Racine



Docker est l'un des outils les plus puissants et les plus influents pour le développement et le déploiement d'applications modernes. En tant que développeurs, nous l'utilisons sur nos machines locales pour installer et configurer rapidement des environnements qui répondent aux besoins de nos applications en quelques secondes.

Cependant, lorsque nous travaillons dans Docker, nous pouvons rencontrer des cas dans lesquels nous devons créer et utiliser des ressources Docker mais n'avons pas d'accès root.

Ou peut-être souhaitez-vous autoriser plusieurs utilisateurs sur un système donné à accéder et à utiliser Docker sans donner l'autorisation root à tous les utilisateurs.







Dans ce didacticiel, nous découvrirons Docker sans racine, ce que cela signifie, comment il fonctionne et comment nous pouvons l'utiliser pour permettre aux utilisateurs sans accès root d'utiliser Docker et ses services associés.



Qu'est-ce qu'un Docker sans racine ?

Par défaut, une fois Docker installé, le démon Docker et ses outils nécessitent les privilèges root sur le système hôte. Cela peut entraîner un risque de sécurité important si Docker est compromis, ce qui peut donner un accès root à l'attaquant.



Rootless Docker est une fonctionnalité qui nous permet d'utiliser et d'exécuter le démon Docker et les conteneurs associés sans autorisations root.





Comment ça fonctionne

Bien qu'il puisse être difficile de se plonger dans le fonctionnement technique d'un environnement Docker sans racine, voici un aperçu de haut niveau qui explique ce que fait un docker sans racine et comment il fonctionne sous le capot.

Espaces de noms d'utilisateur – L’une des fonctionnalités importantes utilisées par un docker sans racine concerne les espaces de noms d’utilisateurs. Cette fonctionnalité fondamentale du noyau Linux permet aux processus d'avoir des identifiants d'utilisateur et de groupe différents à l'intérieur de l'espace de noms et à l'extérieur. Cela signifie qu'un processus peut s'exécuter en tant qu'utilisateur root dans son espace de noms, mais en dehors de celui-ci, il s'exécute en tant qu'utilisateur normal.



La mise en réseau – La prochaine fonctionnalité de Docker sans racine est la mise en réseau. Par défaut, le démon Docker normal s'appuie sur des piles réseau telles que iptables et des ponts nécessitant des autorisations root.

Docker profite de fonctionnalités telles que slirp4netns, qui fournit une pile TCP/IP en mode utilisateur dans un docker sans racine. Cela permet à Docker d'accéder au réseau sans autorisation root sur le système hôte.

Stockage – La prochaine partie essentielle d’un docker sans racine est le pilote de stockage. Par défaut, Docker utilise un pilote de stockage overlay2 qui, comme vous pouvez le deviner, nécessite des autorisations root. Au lieu de cela, une instance Docker sans racine utilise le pilote fuse-overlayfs. Ce pilote est basé sur la superposition FUSE fs, ce qui nous permet de le monter sans autorisations root.

Les éléments ci-dessus sont quelques-uns des composants essentiels d’une instance Docker sans racine. N'oubliez pas que cela n'explore pas le fonctionnement complet d'un docker sans racine. Consultez la documentation pour en savoir plus.

Docker sans racine – Exigences

Passons de la théorie et apprenons à créer et configurer un environnement Docker sans racine.

Pour suivre cet article, assurez-vous d'avoir les éléments suivants :

  1. Un système basé sur Linux avec des autorisations root.
  2. L'accès au réseau.

Configuration du système avec UIDMap

Avant d'installer et de configurer Docker, nous devons installer et configurer le système avec l'utilitaire uidmap.

UIDMap nous permet de gérer les mappages UID et GUI des processus dans un système Linux dans le contenu des espaces de noms utilisateur. Vous vous souvenez quand nous avons mentionné que Docker sans racine profite des espaces de noms des utilisateurs ? Cet outil nous permettra de spécifier les mappages UID et GID et leurs espaces de noms correspondants.

Commencez par actualiser les packages système comme suit :

$ sudo apt-get mise à jour

Ensuite, installez l'utilitaire uidmap comme indiqué :

$ sudo apt-get installer carte utilisateur -et

Installation de Docker sans racine

L'étape suivante consiste à traiter et à installer Docker sans racine. Nous pouvons le faire en suivant les étapes simples décrites ci-dessous :

Commencez par télécharger le script d'installation de Docker sans racine à partir du lien ci-dessous :

https://get.docker.com/rootless

Vous pouvez utiliser cURL ou WGET.

$ boucle -sSL https : // get.docker.com / sans racine | merde

Notez que vous ne pouvez pas exécuter la commande ci-dessus en tant qu'utilisateur root.

Une fois l'installation terminée, modifiez votre fichier .bashrc à l'aide de votre éditeur de texte préféré :

$ nano .bashrc

Ensuite, ajoutez les entrées suivantes au fichier de configuration bashrc :

exporter XDG_RUNTIME_DIR = / maison / Ubuntu / .docker / courir

exporter CHEMIN = / maison / Ubuntu / poubelle: $CHEMIN

exporter DOCKER_HOST =unix : /// maison / Ubuntu / .docker / courir / docker.sock

Assurez-vous de changer l'utilisateur de « ubuntu » par l'utilisateur avec lequel vous souhaitez installer Docker. La sortie du script vous donnera le contenu à ajouter au fichier .bashrc.

Enregistrez les modifications et fermez l'éditeur.

Dans l'étape suivante, nous devons lancer le démon Docker sans racine. Nous pouvons le faire en utilisant systemctl, comme indiqué dans la commande ci-dessous :

systèmectl --ubuntu démarrer le menu fixe

Une fois démarré, vous pouvez utiliser les commandes Docker pour démarrer et configurer les conteneurs Docker.

Conclusion

Dans ce didacticiel, nous avons appris la fonctionnalité de Docker sans racine, son fonctionnement et comment le configurer sur un système Linux. N'hésitez pas à consulter la documentation du docker sans racine pour en savoir plus.