2016-05-11 8 views
1

Meine Docker-Datei hat die folgenden AnweisungenDocker CMD Befehlsausführung

CMD ["luarocks","install",luasocket"] 

Wenn ich versuche Bild zu bauen, es baut erfolgreich aber luasocket ist noch nicht alles auf meinem Docker installiert.
Aber wenn ich diese Anweisung manuell nach "sudo apt-get update" auf Docker ausführen, läuft alles reibungslos.

Warum wird es nach "Update" manuell auf der Kommandozeile ausgeführt. Obwohl mein Andockfenster den Befehl "update" enthält, warum schlägt es in diesem Fall fehl?

Antwort

1

Aber wenn ich diese Aussage manuell ausgeführt werden, nachdem "sudo apt-get update" auf Docker ist alles glatt geht

Wenn Sie ein sudo apt-get update in einer Behälter Sitzung ausführen (dh., Nach a docker run), wird alles, was mit dem Befehl apt-get erledigt wurde, auf den nächsten docker run (nächster Container) zurückgesetzt.

Stellen Sie sicher, dass eine RUN apt-get update in Ihrer Dockerfile enthalten, wenn der Befehl luarocks install luasocket benötigt, um erfolgreich abzuschließen.

Allgemeiner dieser Installationsbefehl (luarocks install luasocket) soll keine CMD sein, sondern eine RUN Richtlinie, um die Installation von luasocket in das Bild zu backen.