2017-10-29 3 views
1

Ich bin neu in Docker, und versuche ein einfaches Beispiel für einen Ubuntu-Container, der ein Shell-Skript ausführt. Ich bin unter Windows 10 mit Docker 17.09.0-CE.Ubuntu-Container kann Shell-Skript nicht finden

Mein Shell-Skript ist einfach:

#!/bin/sh 
echo "hello world!" 

Mein Dockerfile ist:

FROM ubuntu:14.04 
WORKDIR /usr/local/bin 
COPY shelltest.sh shelltest.sh 
ENTRYPOINT ["/usr/local/bin/shelltest.sh"] 

ich verschiedene Formen von ENTRYPOINT und CMD Anrufungen, und keine Arbeit versucht haben. Sie alle scheitern mit "keine solche Datei oder Verzeichnis". Wenn ich den Einstiegspunkt auf "/ bin/sh" ändere und den Container interaktiv starte, kann ich die Datei /usr/local/bin/shelltest.sh sehen, und es hat die Ausführungsrechte 755, also bin ich ratlos erkläre, warum das nicht funktioniert. Hier ist, was die Datei wie im Container aussieht, wenn der Einstiegspunkt wird auf „ls -l /usr/local/bin/shelltest.sh“:

ENTRYPOINT ["ls", "-l", "/usr/local/bin/shelltest.sh"] 

d:\Dev\Docker\shelltest>docker run shelltest 
-rwxr-xr-x 1 root root 32 Oct 29 16:32 /usr/local/bin/shelltest.sh 

Was bin ich?

Hier sind einige Dinge, die ich versucht habe:

ENTRYPOINT ["/usr/local/bin/shelltest.sh"] 

d:\Dev\Docker\shelltest>docker run shelltest 
standard_init_linux.go:185: exec user process caused "no such file or directory" 


ENTRYPOINT ["shelltest.sh"] 

d:\Dev\Docker\shelltest>docker run shelltest 
standard_init_linux.go:185: exec user process caused "no such file or directory" 


CMD ["/usr/local/bin/shelltest.sh"] 

d:\Dev\Docker\shelltest>docker run shelltest 
standard_init_linux.go:185: exec user process caused "no such file or directory" 

Antwort

1

Manchmal, wenn Sie Ihre Shell-Skripten in Windows schreiben erhalten Sie Ausführungsfehler so, versuchen Sie es als Datei Unix mit dos2unix shelltest.sh oder Speichern, kein DOS . Wenn Sie es nicht manuell tun können (mit Notepad ++, Atom oder Sublime) versuchen Sie diesen Link this link

+0

Die Datei hat bereits "x" Berechtigung (755), habe ich die Dateiattribute Ausgabe zu meiner Frage hinzugefügt. – Alan

+1

Manchmal, wenn Sie Ihre Shell-Skripte in Windows schreiben, erhalten Sie seltsame Fehler, versuchen Sie 'dos2unix shelltest.sh' oder speichern Sie es als eine Unix-Datei, kein DOS. Wenn Sie keinen Zugang zu diesen Tools haben, versuchen Sie [diesen Link] (http://newline.nadav.org) –

+0

Bitte aktualisieren Sie Ihre Antwort mit dieser Information, denn das war das Problem! Ich habe Notepad ++ verwendet, um das Shell-Skript mit Unix-Zeilenenden zu speichern, und jetzt wird der Container erfolgreich mit dem ENTRYPOINT-Set für diesen Script-Pfad ausgeführt. Vielen Dank! – Alan