J'ai un conteneur en cours d'exécution et détaché. Je souhaite y créer un alias de commande avant de m'attacher à ce conteneur.
Lorsque je suis attaché au conteneur et que je tape:
/bin/bash -c "alias bar='foo'"
un alias est créé et peut être vérifié par:
docker exec -it <container-name> /bin/bash -c "alias bar='foo'"
.
mais si je veux faire de même avec la commande docker exec c'est-à-dire de cette façon
alias
cela ne fonctionne pas, probablement parce que lorsque je suis attaché au conteneur et que je tape dans son terminal
alias bar='foo'
cela ne fonctionne pas aussi bien.
Savez-vous comment modifier alias bar = 'foo'
pour qu'il fonctionne avec la commande docker exec
appliquée à un conteneur détaché?
3 Réponses :
Le alias
intégré crée un alias dans le shell actuel. Les alias, comme les variables d'environnement, ne sont pas persistants, mais uniquement chargés. Vous devez mettre à jour votre .bashrc ou tout ce qui se trouve à l'intérieur du conteneur pour avoir l'alias souhaité afin qu'il puisse être chargé à chaque début de bash.
ajoutez à votre Dockerfile quelque chose comme
RUN echo alias bar = 'foo' >> ~ / .bashrc
En fait, si vous exécutez votre conteneur sous un utilisateur autre que root
, vous devez placer cette commande dans le bon .bashrc
L'alias dans votre fichier bashrc n'accepte pas directement les paramètres. Bien que dans votre cas, vous devrez créer une fonction et un alias qui.
Vous pouvez ajouter des éléments suivants sur votre ~ / .bashrc
dexec <container_id/container_name>
vous pouvez également utiliser / bin / sh
au lieu de /bin/bash
et n'oubliez pas de faire
source ~/.bashrc
idéalement, vous pouvez faire quelque chose comme ça
dexec() { docker exec -it "$1" /bin/bash echo "$1" }