Outils de développement · Docker exécuté vers Docker compose converter
Citations, sauts de ligne et $VARS : analyser correctement une commande Docker Run
· Comment ça marche
menu fixe ligne de commande citant
Une commande d'exécution de Docker est une entrée du shell avant que Docker ne la voie. Cet article explique comment les citations et les continuations de ligne modifient la nature des jetons et pourquoi aucun convertisseur ne peut étendre vos variables shell.
Le convertisseur a reçu un $HOME littéral — la commande fonctionne dans votre terminal car le shell la développe avant l'exécution du docker
Le convertisseur a reçu un $HOME littéral — la commande fonctionne dans votre terminal car le shell la développe avant l'exécution du docker. Preuve : $HOME reste du texte car le tokeniser n'effectue aucune expansion. Reproduisez la tokenisation du shell avec des littéraux jetables. Associez chaque occurrence source avec des jetons et des continuations cités ; extension de la réserve et analyse Windows pour examen de la destination.
L'incident de citation révèle également qu'une limite distincte de l'incident de citation est que les guillemets simples sont des guillemets littéraux et que les guillemets doubles traitent les évasions documentées. Preuve : les guillemets simples sont littéraux et les guillemets doubles traitent les échappements documentés. Cette contrainte de tokenisation du shell est un point d’arrêt. Inspectez les jetons et les continuations cités sans comportement de fabrication, puis documentez une vérification de l'hôte pour l'expansion et l'analyse Windows.
Ce tokeniseur ressemble à certaines règles de mots shell POSIX mais n'effectue aucune extension de variable ou de commande.
Shell d'abord, Docker ensuite — les jetons que Docker reçoit sont le résultat de la cotation, du fractionnement et de l'expansion du shell. Preuve : des règles de mots sélectionnées de type POSIX sont implémentées sans devenir un shell ; Ce tokeniseur ressemble à certaines règles de mots shell POSIX mais n'effectue aucune expansion de variable ou de commande. Tracez les jetons de tokenisation du shell dans les jetons et les continuations cités. Séparez les valeurs ordonnées des champs de dernière valeur ; l'expansion et l'analyse Windows sont en dehors de la collection.
Une limite connexe du mécanisme de citation est que, pour cette section de citation, conservez l'original de la commande et des avertissements de cette section de citation à côté de ce fichier candidat. Preuve : le référentiel ne donne aucune preuve d'exécution ou historique plus large. Utilisez ce fait de tokenisation du shell pour prédire un membre ou un scalaire dans les jetons et les continuations cités. Vérifiez les avertissements avant de décider quoi que ce soit concernant l'expansion et l'analyse de Windows.
Continuations avec barre oblique inverse et nouvelle ligne - pourquoi la barre oblique inverse finale est une fonctionnalité du shell et un espace parasite après avoir interrompu la commande
Continuations avec barre oblique inverse et nouvelle ligne — pourquoi la barre oblique inverse de fin est une fonctionnalité du shell et un espace parasite après avoir interrompu la commande. Preuve : la barre oblique inverse-nouvelle ligne disparaît tandis qu'une barre oblique inverse isolée du terminal échoue. Jugez la sérialisation de la tokenisation du shell à partir de son modèle. Citer les jetons et les continuations entre guillemets protège les types mais ne donne aucune preuve opérationnelle pour l'expansion et l'analyse Windows.
La deuxième observation de sérialisation de citation est. Une limite de sortie de citation distincte est qu'un échantillon wiki peut être normalisé et ses jetons littéraux inspectés. Preuve : un échantillon de wiki peut être normalisé et ses jetons littéraux inspectés. Cette sortie de tokenisation du shell sépare les paramètres du contexte indisponible. Gardez les jetons et les continuations cités révisables et vérifiez indépendamment l’expansion et l’analyse Windows.
Guillemets simples, guillemets doubles et espaces dans les valeurs — -e MSG='hello world' contre -e MSG=hello world
Guillemets simples, guillemets doubles et espaces dans les valeurs — -e MSG='hello world' contre -e MSG=hello world. Arrêtez-vous à l'exception de tokenisation du shell au lieu de deviner. Tout ajout à proximité de jetons et de continuations cités nécessite une raison spécifique au déploiement liée à l'expansion et à l'analyse Windows.
Une autre contrainte d'exception de citation est qu'une limite d'exception de citation distincte est que l'arité de l'option Docker suit la tokenisation et que les règles Windows sont absentes. Preuve : l'arité des options Docker suit la tokenisation et les règles Windows sont absentes. Conservez la commande de tokenisation du shell d'origine à côté des avertissements. La comparaison montre ce que contiennent les jetons et les continuations cités et quelle décision d'extension et d'analyse Windows reste manuelle.
Les expressions Dollar, la syntaxe du sous-shell et les tildes restent littéraux car le convertisseur n'est pas un shell
Variables et sous-shells — $PWD, $(id -u) et ~ sont développés par votre shell, donc un convertisseur les voit littéralement. Preuve : la notation de sous-shell backticks les variables dollar et tilde ne sont jamais évaluées ; Les expressions dollar, la syntaxe du sous-shell et les tildes restent littéraux car le convertisseur n'est pas un shell. Créez l'exemple de tokenisation du shell à partir de noms synthétiques. Assurez la traçabilité de chaque jeton et élément de continuation cité sans exposer les détails de l'expansion de la production et de l'analyse de Windows.
Le même exemple de citation démontre que pour cette section de citation, conservez l'original de la commande et des avertissements pour cette section de citation à côté de ce fichier candidat. Le fait de tokenisation du shell apparié doit être visible dans les jetons et les continuations cités. Enregistrez cette ligne et évitez les hypothèses sur l'expansion et l'analyse de Windows.
Exemple concret : nettoyer une commande collée dans un wiki — normaliser les continuations et les citations avant la conversion, puis vérifier le YAML
Exemple concret : nettoyer une commande collée dans un wiki — normaliser les continuations et les citations avant la conversion, puis vérifier le YAML. Traduisez la conséquence de la tokenisation du shell en une différence observable de jetons cités et de continuations. Docker possède la dernière extension et le verdict d'analyse de Windows.
L'implémentation de la conséquence de citation montre également. Une limite distincte de l'effet de citation est que $HOME reste du texte car le tokeniser n'effectue aucune expansion. Responsabilités de tokenisation du shell divisé : la conversion écrit les jetons et les continuations cités, le référentiel supprime les secrets et les opérateurs valident l'expansion et l'analyse Windows.
La citation du shell Windows et l'expansion complète de POSIX sont toutes deux en dehors de cet analyseur
Ce que cela ne couvre pas : la propre option de Docker Run analysant les bizarreries, telles que = par rapport à l'espace, et le shell Windows citant les différences. Preuve : l'arité des options Docker suit la tokenisation et les règles Windows sont absentes ; La citation du shell Windows et l'expansion complète de POSIX sont toutes deux en dehors de cet analyseur. Limitez la portée de la tokenisation du shell aux jetons cités et aux branches de continuation indiquées ici. Les formulaires et valeurs par défaut voisins ne peuvent pas répondre aux questions d’expansion et d’analyse Windows.
Une limite de portée de citation supplémentaire découle de la conservation de la commande d'origine pour cette section de citation et des avertissements à côté de ce fichier candidat. Traitez cette limite de tokenisation du shell comme une exclusion. Préférez les jetons et les continuations cités avec précision aux suppositions sur l’expansion et l’analyse de Windows.
À retenir : donnez au convertisseur ce que Docker verrait - et remplacez les variables shell par des valeurs littérales ou une interpolation Compose ${VAR}
À retenir : donnez au convertisseur ce que Docker verrait - et remplacez les variables shell par des valeurs littérales ou une interpolation Compose ${VAR}. Preuve : une saisie fiable signifie fournir des mots littéraux destinés à l'analyse. Auditez la tokenisation du shell en tant qu'option source, champ de modèle, jetons cités et ligne de continuation et avertissement. Supprimez les secrets avant de vérifier l'expansion et l'analyse Windows.
Enfin, la source à retenir confirme qu'une limite de décision de citation distincte est que la barre oblique inverse-nouvelle ligne disparaît tandis qu'une barre oblique inverse isolée du terminal échoue. Fermez la tokenisation du shell de manière étroite : les jetons et les continuations cités sont candidats ; l'expansion, l'analyse Windows et l'équivalence du shell ne sont pas des garanties.