Détails
Comment entrer dans le shell d'un conteneur Docker ?
Je commence à travailler avec Docker. J'utilise l'image de base de WordPress et docker-compose.
J'essaie de me connecter à l'un des conteneurs pour inspecter les fichiers/répertoires qui ont été créés lors de la construction initiale. J'ai essayé d'exécuter docker-compose run containername ls -la
, mais cela n'a rien donné. Même si c'était le cas, je préférerais avoir une console où je peux parcourir la structure des répertoires, plutôt que d'exécuter une seule commande. Quelle est la bonne façon de procéder avec Docker ?
979
3
docker attach
vous permettra de vous connecter à votre conteneur Docker, mais ce n'est pas vraiment la même chose quessh
. Si votre conteneur fait tourner un serveur web, par exemple,docker attach
vous connectera probablement au stdout du processus du serveur web. Il ne vous donnera pas nécessairement un shell.La commande
docker exec
est probablement ce que vous recherchez ; elle vous permettra d'exécuter des commandes arbitraires à l'intérieur d'un conteneur existant. Par exemple :Bien sûr, la commande que vous exécutez doit exister dans le système de fichiers du conteneur.
Dans la commande ci-dessus, `
est le nom ou l'ID du conteneur cible. Peu importe que vous utilisiez ou non
docker compose; exécutez simplement
docker ps` et utilisez soit l'ID (une chaîne hexadécimale affichée dans la première colonne) ou le nom (affiché dans la dernière colonne). Par exemple, donné :je peux l'exécuter :
Je pourrais accomplir la même chose en exécutant :
De même, je pourrais lancer un shell dans le conteneur ;
docker exec
sera certainement une solution. Une façon simple de travailler avec la question que vous avez posée est de monter le répertoire dans Docker sur le répertoire du système local.Ainsi, vous pouvez voir les changements dans le chemin local instantanément.
Une autre option consiste à utiliser nsenter.