5 votes

docker exec interactif bash avec commandes init

Pour le débogage, j'aimerais sauter dans n'importe quel conteneur docker que j'ai et définir quelques particularités sur mon Shell interactif dès le départ. Pour une raison quelconque, le style --init-file ci-dessous fonctionne maintenant.

Comme pour beaucoup de choses, j'imagine qu'il s'agit d'un problème de séquence d'échappement que je ne comprends pas. Des suggestions ?

docker exec -it mycontainer bash --init-file <(echo "PS1='\w\$ '; TERM=xterm256; alias ls='ls -GFh'")

Aucune des commandes de --init-file n'est appliquée au bash Shell lancé dans le conteneur.

0 votes

Aucune des commandes de --init-file n'est appliquée au bash Shell lancé dans le conteneur.

1 votes

Et pourquoi ne pas les passer comme variables env ? Quelque chose comme docker exec -it -e PS1='\w\$ ' -e TERM=xterm256 mycontainer bash ?

1 votes

Vous avez trouvé la solution ? Je rencontre le même problème. Je veux créer automatiquement une source pour un virtualenv avant de l'utiliser.

1voto

Étant donné votre configuration bash dans le fichier my-bash-niceties

my-bash-niceties

PS1=' \w\ $ '
TERM=xterm256
alias ll='ls -GFh''.

Option 1

Une possibilité est de monter le fichier de configuration de bash dans votre conteneur...

docker run --detach -it -v `pwd`/my-bash-niceties:/etc/bashrc --name mycontainer bash:4.0

... et appeler bash en l'utilisant comme fichier d'initialisation.

docker exec -it  mycontainer bash  --init-file /etc/bashrc

Option 2

Une autre option est de monter votre fichier de configuration bash comme votre ~/.bashrc ...

docker run --detach -it -v `pwd`/my-bash-niceties:/root/.bashrc --name mycontainer bash:4.0

... et juste exécuter bash dans le conteneur.

docker exec -it  mycontainer bash

En théorie, la troisième (et meilleure !) option consiste à monter le fichier de configuration bash sous le nom de /etc/profile.d/my_bash_rc.sh (n'importe quel fichier .sh fonctionne), mais je ne sais pas pourquoi ce conteneur n'honore pas cette convention. :(

En fait, l'option --init-file fait référence à un fichier à l'intérieur de le système de fichiers du conteneur.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X