2017-01-21 3 views
-1

Ich bin neu bei Docker und versuche mein existierendes Kalilinux Docker Image mit postgresql & metasploit vorinstalliert zu starten.Wie führe ich ein Docker-Image aus einer Dockerfile aus?

meine Dockerfile sieht derzeit wie folgt aus:

FROM kalilinux/kali-linux-docker:latest 

RUN apt-get -y update && echo 'y' | apt-get install postgresql --fix-missing 
RUN echo 'y' | apt-get install metasploit-framework 

Das gerade fein baut, aber wenn ich es laufen, ist es die gegebenen Befehle von meinem kali Bild läuft, und schaltet dann ab. Ich möchte diese Befehle ausgeführt haben, und haben Kali Linux dann auf meinem Rechner öffnen mit postgre und Metasploit installiert, so etwas wie dieses:

FROM kalilinux/kali-linux-docker:latest 

RUN apt-get -y update && echo 'y' | apt-get install postgresql --fix-missing 
RUN echo 'y' | apt-get install metasploit-framework 
# Pseudo code below 
CMD docker run kalilinux/kali-linux-docker 

Hier ist das Original-Blog-Post von Kalis offiziellen Website, die ich anfangs gefolgt, um zu einrichten kali linux: Kali Linux On Docker

Vielen Dank.

+0

Ich denke, dies ist das erste [tag ist: kali- linux] Frage, die je so ziemlich knapp zum Thema war. Glückwunsch. – Will

Antwort

2

Wenn Sie docker run und Bild, es wird ausgeführt, was auch immer CMD (oder ENTRYPOINT) in der Dockerfile angegeben ist. Wenn Sie Ihr Bild wollen immer in einer interaktiven Shell führen, würden Sie etwas in Ihrem Dockerfile wie diese benötigen:

CMD ["/bin/bash"] 

Mit dem im Ort, wenn Sie laufen waren:

docker build -t myimage . 

Und dann Nachdem das Image erstellt wurde, führen Sie folgende Schritte aus:

docker run -it myimage 

Sie würden mit einer interaktiven Shell enden. Ist es das was du willst? Beachten Sie, dass postgresql natürlich nicht ist, die läuft; Sie haben es installiert, aber Sie haben keine Befehle ausgegeben, die starten würden es. Ein anderer Ansatz wäre, dass Ihr Bild standardmäßig postgres startet und dann docker exec verwendet, um eine interaktive Shell im Container zu erhalten, sobald sie ausgeführt wird.

Es gibt andere Wege, dies zu erreichen, aber es hängt wirklich davon ab, was Sie gerade tun.

+0

Danke, ich bin mir bewusst, dass Postgresql würde nicht ausgeführt werden, wenn ich es wollte, würde ich die CMD ausgeben, um es in der Dockerfile ausführen. Für mich, ** sieht es so aus, als würde einfach das Argument -it zum Befehl run hinzufügen, was ich gebraucht habe **. –

+0

In Bezug auf die Flags "-i" und "-t" finden Sie möglicherweise [diese Antwort] (http://stackoverflow.com/a/41732542/147356) hilfreich. – larsks

0

Sie könnten ein post_install.sh Skript erstellen, legen Sie sie in den Ordner des dockerfile, kopieren Sie sie in Ihrem Docker Beispiel dann führen Sie es aus:

ADD post_install.sh/
WORKDIR/
CMD ["/post_install.sh"] 
+0

clevere Idee, ich werde das im Hinterkopf behalten –

Verwandte Themen