2016-06-04 6 views
5

Ich erstelle ein Bild von einem anderen Bild, das einen bestimmten Einstiegspunkt festlegt. Ich möchte jedoch, dass mein Bild einen Standard hat. Wie setze ich den ENTRYPOINT zurück?Default Docker entrypoint

Ich habe versucht, die folgende Dockerfile:

FROM some-image 
ENTRYPOINT ["/bin/sh", "-c"] 

Leider ist es nicht wie der Standard-Einstiegspunkt arbeiten, wie es den Befehl muß zitiert werden.

docker run myimage ls -l/ # "-l /" arguments are ignored 
file1 file2 file3    # files in current working directory 

docker run myimage "ls -l /" # works correctly 

Wie verwende ich Befehle ohne anzugeben?

+0

siehe Hilfe zum Zurücksetzen des Einstiegspunkts '$ docker run --help | grep entrepoint zeigt '--entrypoint Überschreibt den Standard ENTRYPOINT des Bildes. – user2915097

+0

Ich muss dies in der Dockerfile tun –

Antwort

18

eine bestehende ENTRYPOINT zu deaktivieren, setzen ein leeres Array in Ihrem Docker Datei

ENTRYPOINT [] 

dann Ihre Argumente docker run als normal exec wird.

Der Grund, warum Ihre ENTRYPOINT ["/bin/sh", "-c"] Zeichenketten in Anführungszeichen erfordert, ist, dass ohne die Anführungszeichen die Argumente an ls stattdessen an sh übergeben werden.

Unquoted Ergebnisse in vielen Argumenten sh

"/bin/sh", "-c", "ls", "-l", "/" 

gesendeten Zitiert erlaubt es der vollständige Befehl (sh -c) auf sh als ein Argument übergeben werden.

"/bin/sh", "-c", "ls -l /" 
Verwandte Themen