Maison Opération et maintenance Docker Solution à l'échec du changement d'utilisateur du conteneur Docker

Solution à l'échec du changement d'utilisateur du conteneur Docker

Mar 31, 2023 pm 05:47 PM

Docker est une technologie de virtualisation couramment utilisée qui nous aide à créer et déployer rapidement des applications. Il se caractérise par sa rapidité, sa légèreté et sa sécurité. L'une des caractéristiques de sécurité importantes est que lors de l'exécution d'une application dans un conteneur, l'application peut être exécutée dans un environnement restreint. De plus, les conteneurs Docker prennent également en charge la gestion des autorisations des utilisateurs, ce qui peut améliorer la sécurité des applications en ajoutant un nouvel utilisateur et en basculant vers cet utilisateur. Cependant, vous pouvez rencontrer des problèmes lors du changement d'utilisateur. Par exemple, les utilisateurs du conteneur ne peuvent pas utiliser la commande su pour passer à d'autres utilisateurs. Ci-dessous, nous expliquerons les principales raisons et solutions pour l'échec du changement d'utilisateur dans les conteneurs Docker.

  1. La commande sudo n'est pas installée dans le conteneur Docker

Lorsque vous utilisez la commande su pour changer d'utilisateur dans le conteneur Docker, vous devez utiliser la commande sudo pour élever temporairement les autorisations et saisir le mot de passe de l'utilisateur root pour exécuter le su commande. Si la commande sudo n'est pas installée dans le conteneur Docker, l'opération de changement d'utilisateur ne s'effectuera pas correctement. Par conséquent, vous devez installer la commande sudo dans le conteneur pour résoudre ce problème :

apt-get update && apt-get install -y sudo
Copier après la connexion

Après l'installation, vous pouvez essayer d'utiliser la commande su username pour changer d'utilisateur.

  1. Les utilisateurs dans le conteneur Docker ne correspondent pas à l'UID et au GID de l'utilisateur de la machine hôte

L'UID et le GID de l'utilisateur à l'intérieur du conteneur Docker peuvent être différents de l'UID et du GID de la machine hôte, ce qui peut entraîner l'obtention d'autorisations lors du changement de question d'utilisateur. Par exemple, lors de l'exécution d'un serveur Apache dans un conteneur Docker, lorsque vous utilisez la commande su www-data pour basculer vers l'utilisateur www-data, l'UID et le GID de l'utilisateur www-data ne correspondront pas à l'UID et au GID de l'utilisateur www-data. Utilisateur www-data sur la machine hôte De même, l'utilisateur www-data ne pourra pas accéder à certains répertoires et fichiers sur la machine hôte. Afin de résoudre ce problème, vous devez ajouter une directive USER dans le Dockerfile pour spécifier l'UID et le GID de l'utilisateur dans le conteneur, par exemple :

FROM ubuntu:latest

RUN useradd -ms /bin/bash youruser
USER youruser
Copier après la connexion

Ici, nous créons un utilisateur nommé youruser et spécifions son UID et son GID. comme valeur par défaut. Si vous devez utiliser d'autres noms d'utilisateur et UID dans le conteneur, vous pouvez les modifier en fonction de la situation réelle.

  1. SELinux et AppArmor ne sont pas correctement configurés dans les conteneurs Docker

Dans certains systèmes d'exploitation Linux, tels que Red Hat Enterprise Linux (RHEL) ou Ubuntu, SELinux ou AppArmor peuvent restreindre les droits d'accès des utilisateurs dans le conteneur. Si vous ne parvenez pas à utiliser la commande su pour changer d'utilisateur dans un conteneur Docker, envisagez de désactiver SELinux ou AppArmor ou de le configurer pour permettre aux utilisateurs du conteneur d'accéder à des répertoires et des fichiers spécifiques. Ici, nous présentons brièvement comment configurer AppArmor dans Ubuntu pour permettre aux utilisateurs du conteneur d'accéder à certains répertoires et fichiers sur la machine hôte.

Tout d'abord, vous devez ajouter l'instruction suivante au Dockerfile :

RUN apt-get update && apt-get install -y apparmor-utils
Copier après la connexion

Ensuite, créez un fichier nommé your-container dans le répertoire /etc/apparmor.d/docker/ et ajoutez le contenu suivant :

/path/to/your/dir rw,
Copier après la connexion

Le / ci-dessus path/to/your/dir représente un répertoire sur la machine hôte, que vous pouvez modifier selon vos besoins. Après l'ajout, rechargez la configuration AppArmor :

/etc/init.d/apparmor reload
Copier après la connexion

Voici quelques raisons et solutions possibles en cas d'échec du changement d'utilisateur dans les conteneurs Docker. En comprenant ces problèmes et solutions, vous pouvez mieux comprendre la gestion des droits d'utilisateur et la sécurité des conteneurs Docker.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Questions d'entrevue Docker: Ace Your DevOps Engineering Interview Questions d'entrevue Docker: Ace Your DevOps Engineering Interview Apr 06, 2025 am 12:01 AM

Docker est une compétence incontournable pour les ingénieurs DevOps. 1.Docker est une plate-forme conteneurisée open source qui atteint l'isolement et la portabilité par les applications d'emballage et leurs dépendances dans les conteneurs. 2. Docker fonctionne avec les espaces de noms, les groupes de contrôle et les systèmes de fichiers fédérés. 3. L'utilisation de base comprend la création, l'exécution et la gestion des conteneurs. 4. L'utilisation avancée comprend l'utilisation de dockercosive pour gérer les applications multi-container. 5. Les erreurs courantes incluent une défaillance des conteneurs, des problèmes de cartographie des ports et des problèmes de persistance des données. Les compétences de débogage incluent la visualisation des journaux, la saisie des conteneurs et la visualisation d'informations détaillées. 6. L'optimisation des performances et les meilleures pratiques incluent l'optimisation de l'image, les contraintes de ressources, l'optimisation du réseau et les meilleures pratiques pour l'utilisation de dockerfile.

Volumes de docker: gérer les données persistantes dans les conteneurs Volumes de docker: gérer les données persistantes dans les conteneurs Apr 04, 2025 am 12:19 AM

Dockervolumes garantit que les données restent sûres lorsque les conteneurs sont redémarrés, supprimés ou migrés. 1. Créer un volume: dockervolumecreatemydata. 2. Exécutez le conteneur et le volume de montage: dockerrun-it-vmydata: / app / dataubuntubash. 3. L'utilisation avancée comprend le partage de données et la sauvegarde.

Comment mettre à jour l'image de Docker Comment mettre à jour l'image de Docker Apr 15, 2025 pm 12:03 PM

Les étapes pour mettre à jour une image Docker sont les suivantes: Tirez la dernière étiquette d'image Nouvelle image Supprimer l'ancienne image pour une balise spécifique (facultative) Redémarrez le conteneur (si nécessaire)

Comment sortir du conteneur par Docker Comment sortir du conteneur par Docker Apr 15, 2025 pm 12:15 PM

Quatre façons de quitter Docker Container: Utilisez Ctrl D dans le terminal de conteneur Entrez la commande d'exit dans le terminal de conteneur Utilisez Docker Stop & lt; contener_name & gt; Commande utilise docker kill & lt; contener_name & gt; commande dans le terminal hôte (sortie de force)

Comment copier des fichiers dans Docker à l'extérieur Comment copier des fichiers dans Docker à l'extérieur Apr 15, 2025 pm 12:12 PM

Méthodes de copie de fichiers en hôtes externes dans Docker: Utilisez la commande docker cp: exécuter docker cp [options] & lt; Container Path & gt; & lt; Host Path & gt;. Utilisation de volumes de données: créez un répertoire sur l'hôte et utilisez le paramètre -v pour monter le répertoire dans le conteneur lors de la création du conteneur pour obtenir la synchronisation de fichiers bidirectionnels.

Comment vérifier le nom du conteneur Docker Comment vérifier le nom du conteneur Docker Apr 15, 2025 pm 12:21 PM

Vous pouvez interroger le nom du conteneur Docker en suivant les étapes: répertorier tous les conteneurs (Docker PS). Filtrez la liste des conteneurs (à l'aide de la commande grep). Obtient le nom du conteneur (situé dans la colonne "Noms").

Comment redémarrer Docker Comment redémarrer Docker Apr 15, 2025 pm 12:06 PM

Comment redémarrer le conteneur Docker: Obtenez l'ID de conteneur (Docker PS); Arrêtez le conteneur (docker stop & lt; contener_id & gt;); Démarrer le conteneur (docker start & lt; contener_id & gt;); Vérifiez que le redémarrage réussit (Docker PS). Autres méthodes: Docker Compose (redémarrage Docker-Compose) ou API Docker (voir Docker Documentation).

Comment afficher le processus Docker Comment afficher le processus Docker Apr 15, 2025 am 11:48 AM

Méthode de visualisation du processus docker: 1. Commande Docker CLI: Docker PS; 2. Commande CLI Systemd: Docker d'état SystemCTL; 3. Docker Compose CLI Commande: Docker-Compose PS; 4. Process Explorer (Windows); 5. / Répertoire proc (Linux).

See all articles