Español

Herramientas de desarrollo · Convertidor de ejecución de Docker a Docker Compose ventana acoplable

Comillas, saltos de línea y $VARS: analizar correctamente un comando de ejecución de Docker

· Cómo funciona

docker línea de comando cotizando

Diagrama abstracto que ilustra citas, saltos de línea y $vars: análisis correcto de un comando de ejecución de Docker
Ilustración de vector original de ToolAcre

Un comando de ejecución de Docker es una entrada de shell antes de que Docker lo vea. Esta publicación explica cómo las comillas y las continuaciones de línea cambian lo que son los tokens y por qué ningún convertidor puede expandir sus variables de shell.

El convertidor recibió un $HOME literal: el comando funciona en su terminal porque el shell lo expande antes de que se ejecute Docker.

El convertidor recibió un $HOME literal: el comando funciona en su terminal porque el shell lo expande antes de que se ejecute la ventana acoplable. Evidencia: $HOME sigue siendo texto porque el tokenizador no realiza ninguna expansión. Reproduzca la tokenización de shell con literales desechables. Empareje cada aparición de fuente con tokens y continuaciones citados; reserve la expansión y el análisis de Windows para la revisión del destino.

El incidente de cotización también revela que un límite separado del incidente de cotización es que las comillas simples son literales y las comillas dobles procesan escapes documentados. Evidencia: las comillas simples son escapes literales y las comillas dobles procesan documentos. Esta restricción de tokenización de shell es un punto de parada. Inspeccione los tokens cotizados y las continuaciones sin comportamiento de fabricación, luego documente una verificación del host para la expansión y el análisis de Windows.

Este tokenizador se parece a las reglas de palabras del shell POSIX seleccionadas, pero no realiza ninguna expansión de variables o comandos.

Shell primero, Docker segundo: los tokens que recibe Docker son el resultado de la cotización, división y expansión del Shell. Evidencia: las reglas de palabras seleccionadas similares a POSIX se implementan sin convertirse en un caparazón; Este tokenizador se parece a las reglas de palabras de shell POSIX seleccionadas, pero no realiza ninguna expansión de variables ni comandos. Rastree los tokens de tokenización de shell en tokens cotizados y continuaciones. Separe los valores ordenados de los campos del último valor; La expansión y el análisis de Windows están fuera de la colección.

Un límite del mecanismo de cotización relacionado es que para esta sección de cotización se mantiene el comando original de esta sección de cotización y las advertencias para esta sección de cotización junto a este archivo candidato. Evidencia: el repositorio no proporciona pruebas históricas ni de tiempo de ejecución más amplio. Utilice este hecho de tokenización de shell para predecir un miembro o escalar en tokens y continuaciones entre comillas. Consulte las advertencias antes de decidir algo sobre la expansión y el análisis de Windows.

Continuaciones de nueva línea con barra invertida: por qué la barra invertida final es una característica del shell y un espacio perdido después de interrumpir el comando

Continuaciones de nueva línea con barra invertida: por qué la barra invertida final es una característica del shell y un espacio perdido después de interrumpir el comando. Evidencia: la barra invertida-nueva línea desaparece mientras que falla una barra invertida solitaria en el terminal. Juzgue la serialización de la tokenización del shell a partir de su modelo. Las citas entre tokens y continuaciones protegen los tipos, pero no proporcionan pruebas operativas para la expansión y el análisis de Windows.

La segunda observación de serialización de citas es Un límite de salida de citas separado es que una muestra de wiki se puede normalizar y sus tokens literales se pueden inspeccionar. Evidencia: una muestra de wiki se puede normalizar y sus tokens literales se pueden inspeccionar. Esta salida de tokenización de shell separa la configuración del contexto no disponible. Mantenga los tokens citados y las continuaciones revisables y verifique la expansión y el análisis de Windows de forma independiente.

Comillas simples, comillas dobles y espacios en valores: -e MSG='hola mundo' versus -e MSG=hola mundo

Comillas simples, comillas dobles y espacios en valores: -e MSG='hola mundo' versus -e MSG=hola mundo. Deténgase en la excepción de tokenización del shell en lugar de adivinar. Cualquier adición cercana a tokens cotizados y continuaciones necesita un motivo específico de implementación vinculado a la expansión y el análisis de Windows.

Otra restricción de excepción de comillas es que Un límite de excepción de comillas separado es que la aridad de la opción de Docker sigue la tokenización y las reglas de Windows están ausentes. Evidencia: la aridad de las opciones de Docker sigue la tokenización y las reglas de Windows están ausentes. Mantenga el comando de tokenización de shell original junto a las advertencias. La comparación muestra qué tokens y continuaciones citados contienen y qué expansión y decisión de análisis de Windows siguen siendo manuales.

Las expresiones en dólares, la sintaxis del subshell y las tildes permanecen literales porque el convertidor no es un shell

Variables y subcapas: $PWD, $(id -u) y ~ son expandidas por su shell, por lo que un convertidor las ve literalmente. Evidencia: la notación de subcapa hace hincapié en las variables de dólar y la tilde nunca se evalúan; Las expresiones en dólares, la sintaxis de subcapa y las tildes siguen siendo literales porque el convertidor no es un shell. Cree el ejemplo de tokenización de shell a partir de nombres sintéticos. Haga que todos los tokens cotizados y elementos de continuación sean rastreables sin exponer la expansión de producción y los detalles de análisis de Windows.

El mismo ejemplo de cita demuestra que para esta sección de cita, mantenga el comando original de esta sección de cita y las advertencias para esta sección de cita junto a este archivo candidato. El hecho de la tokenización del shell emparejado debería ser visible en los tokens y continuaciones entrecomillados. Registre esa línea y evite suposiciones sobre la expansión y el análisis de Windows.

Ejemplo resuelto: limpiar un comando pegado en wiki: normalizar las continuaciones y citar antes de la conversión, luego verificar el YAML

Ejemplo resuelto: limpiar un comando pegado en wiki: normalizar las continuaciones y citar antes de la conversión, luego verificar el YAML. Traduzca la consecuencia de la tokenización del shell en una diferencia observable de tokens citados y continuaciones. Docker posee la expansión posterior y el veredicto del análisis de Windows.

La implementación de la consecuencia de las comillas también muestra un límite de efecto de comillas independiente es que $HOME sigue siendo texto porque el tokenizador no realiza ninguna expansión. Responsabilidades de tokenización de shell dividido: la conversión escribe tokens citados y continuaciones, el repositorio elimina secretos y los operadores validan la expansión y el análisis de Windows.

Las citas del shell de Windows y la expansión POSIX completa están fuera de este analizador

Lo que esto no cubre: las peculiaridades de análisis de opciones de Docker Run, como = versus espacio, y las diferencias entre comillas del shell de Windows. Evidencia: la aridad de las opciones de Docker sigue la tokenización y las reglas de Windows están ausentes; Las citas del shell de Windows y la expansión POSIX completa están fuera de este analizador. Limite el alcance de la tokenización del shell a los tokens citados y las ramas de continuación que se muestran aquí. Los formularios vecinos y los valores predeterminados no pueden responder preguntas de expansión y análisis de Windows.

Un límite más del alcance de las citas se deriva de mantener el comando original para esta sección de citas y las advertencias al lado de este archivo candidato. Trate este límite de tokenización de shell como una exclusión. Prefiera tokens citados con precisión y continuaciones a conjeturas sobre la expansión y el análisis de Windows.

Conclusión: proporcione al convertidor lo que vería Docker y reemplace las variables del shell con valores literales o interpolación Compose ${VAR}

Conclusión: proporcione al convertidor lo que vería Docker y reemplace las variables de shell con valores literales o interpolación Compose ${VAR}. Evidencia: una entrada confiable significa proporcionar palabras literales destinadas al análisis. Tokenización del shell de auditoría como opción de origen, campo de modelo, tokens citados y línea de continuación y advertencia. Elimine los secretos antes de verificar la expansión y el análisis de Windows.

Finalmente, la fuente de la cita para llevar confirma. Un límite de decisión de cita separada es que la barra invertida de nueva línea desaparece mientras que falla una barra invertida solitaria del terminal. Cerrar la tokenización de Shell de manera estricta: los tokens citados y las continuaciones son candidatos; La expansión y el análisis de Windows y la equivalencia de shell no son garantías.