IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Explication sur script Docker


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 65
    Par défaut Explication sur script Docker
    Bonjour à tous,

    Voici quelques jours, je m'intéresse à Linux et Docker. J'ai réussi à mettre en oeuvre une stack pour le développement d'applis. Mais j'aimerai rendre les choses plus pratique.
    Je suis tomber sur ce bout de script dans la doc Docker pour installer composer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    composer () {
        tty=
        tty -s && tty=--tty
        docker run \
            $tty \
            --interactive \
            --rm \
            --user $(id -u):$(id -g) \
            --volume /etc/passwd:/etc/passwd:ro \
            --volume /etc/group:/etc/group:ro \
            --volume $(pwd):/app \
            composer "$@"
    }
    La page où j'ai trouvé le code : https://hub.docker.com/_/composer/

    Concrètement et si j'ai bien compris, cela permet, depuis la machine hôte (physique) d'exécuter composer sans devoir entrer dans le container Docker via docker exec -it XXXXX bash.
    Mais il y a de nombreux signes cabalistiques dont je ne comprends pas le sens.

    ex: tty= tty -s && tty=--tty

    J'ai bien compris que c'est relatif au terminal mais je ne comprends pas ce que cela veut dire. Et la recherche Google n'a rien donné de probant. Pourquoi tty= tty=--tty???

    Idem pour : user $(id -u):$(id -g) comme ça, je dirai que c'est pour récupérer le nom d'utilisateur et le groupe de l'utilsateur actif dans le container.

    --volume $(pwd):/app \ Alors là? Accéder à une ressources en utilsant un password style monpassword/MaRessource ?

    Pour composer "$@", j'imagine que $@ récupère les paramètres fournis lorsque je tape la commande dans la ligne de commande de l'hôte.

    Dernière question, je peux modifier ce code pour autre chose? Par exemple lancer un redis-cli ou un terminal python dockerisé directement depuis l'hôte? Je ne vois pas de contre indication mais des fois que...


    Merci d'avance pour vos éclaircissement
    Cordialement,

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    Bonjour,

    ce n'est pas tty= tty -s && tty=--tty, mais tty=""; tty -s && tty="--tty", où && est un ET logique.

    quant aux id, il sont exécutés dans le contexte courant, pas dans docker.

    après, je ne connais pas docker.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 65
    Par défaut
    Merci N_BaH pour ces premiers éléments de réponse.
    Je pense comprendre un peu mieux.

    tty="" On crée une variable vide
    tty -s Commande qui lance un terminal en mode silencieux
    && A la suite de quoi
    tty="--tty" On attribut la valeur --tty à tty Cette valeur est réutilisé dans le script avec $tty

    Mais je me demande pourquoi je ne peux pas simplement écrire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    composer () {
        tty -s  #Je lance mon terminal en mode silencieux?
        docker run \
            --tty \
            --interactive \
            --rm \
            --user $(id -u):$(id -g) \
            --volume /etc/passwd:/etc/passwd:ro \
            --volume /etc/group:/etc/group:ro \
            --volume $(pwd):/app \
            composer "$@"
    }
    J'ai testé en ajoutant ça dans mon ~/.bashrc. Cela fonctionne mais est-ce vraiment identique?
    Un autre truc me perturbe, c'est que je ne vois pas à quel moment je renseigne le nom du container à utiliser?

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ man -s1 -k '^tty$'
    tty (1)              - print the file name of the terminal connected to standard input
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 65
    Par défaut
    Euh...j'avoue que je n'ai pas bien compris où tu veux en venir.

    Si c'est pour me dire que la commande tty me renvoie un truc style /dev/pts/1, ça c'est bon.

    Je pense que je vais passer le post en résolu. Et me documenter.

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    c'est ça. tty ne lance pas un terminal en mode silencieux.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Besoin d'explication sur un script
    Par DjiLow dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/01/2010, 10h45
  2. Explication sur tout petit script
    Par Fluxy dans le forum Langage
    Réponses: 8
    Dernier message: 23/07/2007, 08h29
  3. Quelques explications sur un script shell
    Par Olivier Regnier dans le forum Shell et commandes GNU
    Réponses: 14
    Dernier message: 03/07/2007, 19h54
  4. Explication sur un script
    Par donny dans le forum Linux
    Réponses: 6
    Dernier message: 29/06/2006, 11h33
  5. Explication sur un script
    Par Krispy dans le forum Linux
    Réponses: 1
    Dernier message: 22/03/2006, 12h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo