3
votes

Docker exec terminal Linux créer un alias

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é?


0 commentaires

3 Réponses :


3
votes

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.


0 commentaires

1
votes

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


0 commentaires

4
votes

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"
}


0 commentaires