runc · Docker
El mensaje
standard_init_linux.go: exec user process caused: no such file or directory
Qué significa
El contenedor intentó ejecutar su entrypoint y el núcleo respondió "no such file", y la trampa es que el archivo está claramente ahí. Los finales de línea del script son CRLF, así que la primera línea se lee como #!/bin/sh\r y el núcleo busca un intérprete llamado literalmente sh\r; clonar en Windows o dejar activado el autocrlf de git produce exactamente esto. dos2unix entrypoint.sh convierte ese archivo (o sed -i 's/\r$//' entrypoint.sh si no lo tienes), y una línea *.sh text eol=lf en .gitattributes evita que vuelva. Nombrar en el #! un intérprete que la imagen no tiene —bash en una imagen alpine— da el mismo texto.
El arreglo
dos2unix entrypoint.sh- Lo imprime
- runc
- Docker
- 12
Los errores de Docker solo se vuelven legibles cuando los sitúas en una capa —el cliente que no alcanza al demonio, el registro que te rechaza, un RUN que falla durante la compilación y un contenedor que muere al arrancar son cuatro problemas distintos— y en las capas de compilación y ejecución la línea en sí no es el motivo: el motivo está en la salida del comando que corría dentro, y el precio de cada arreglo también cambia según la capa.
Cómo leer un mensaje de error
- Lee desde la primera línea. Cuanto más abajo, más son las tripas de la herramienta; la causa suele estar arriba.
- Si hay un archivo y un número de línea, empieza ahí: no el marco superior de la pila, sino la línea más alta que nombre un archivo tuyo.
- Busca el mensaje literal, pero quita antes tus rutas y nombres de variables: eso es lo que impide que la búsqueda coincida.
- La misma condición se redacta distinto según la versión. Si los resultados no cuadran, añade el número de versión.
- Antes de pegar un arreglo, comprueba qué descarta. Algunos no se pueden deshacer.
Preguntas frecuentes
Q. ¿Qué significa «standard_init_linux.go: exec user process caused: no such file or directory»?
El contenedor intentó ejecutar su entrypoint y el núcleo respondió "no such file", y la trampa es que el archivo está claramente ahí. Los finales de línea del script son CRLF, así que la primera línea se lee como #!/bin/sh\r y el núcleo busca un intérprete llamado literalmente sh\r; clonar en Windows o dejar activado el autocrlf de git produce exactamente esto. dos2unix entrypoint.sh convierte ese archivo (o sed -i 's/\r$//' entrypoint.sh si no lo tienes), y una línea *.sh text eol=lf en .gitattributes evita que vuelva. Nombrar en el #! un intérprete que la imagen no tiene —bash en una imagen alpine— da el mismo texto.
Q. ¿Cómo se arregla?
dos2unix entrypoint.sh — antes de ejecutarlo, mira arriba qué descarta este comando.
Q. ¿Qué herramienta lo imprime?
runc. Está en Docker y el mensaje tiene 10 palabras.