2016-08-26 5 views
0

Ich möchte eine Bash-Datei jedes Mal, wenn ich beginne, das Docker-Bild zu starten, aber konnte nicht herausfinden, wie dies mit ein paar Stunden bereits tun. Und was heißt siehtWie run Bash-Datei beim Starten von run Docker Bild

#!/bin/bash 
while true; 
do 
    echo "hello world" 
    sleep 10 
done 

Ich denke, wie meine Bash-Datei, wenn ich die Docker anfangen zu laufen, wird die bash-Datei auch kontinuierlich innerhalb des Docker Bild ausgeführt werden, in diesem Fall wird die Bash-Datei tun seine Arbeit, solange der Hafenarbeiter eingeschaltet ist.

Wie wird das eingerichtet? sollte ich das innerhalb des Docker-Images erstellen? oder ich kann Bash-Datei in run.sh setzen, so dass es passiert, wenn Docker läuft?

+0

Was haben Sie bisher versucht? Haben Sie die Dokumentation zu [Bilder erstellen] (https://docs.docker.com/engine/tutorials/dockerimages/) gelesen? Welche Teile sind unklar? – larsks

+0

Hallo. @Iarsks, ich habe versucht, den Dateipfad in Dockerfile.in hinzuzufügen und das Docker-Image zu erstellen, das funktioniert super, danke. Aber gibt es eine Methode, dies zu tun, ohne das Docker-Image neu zu erstellen? – HaipengSu

Antwort

1

Kopieren Sie einfach Ihre Skriptdatei looke oder in der Docker-Datei hinzufügen und dann den Befehl CMD verwenden, um sie auszuführen ..

Zum Beispiel, wenn u Kopie run.sh zu/ Dann in dem letzten Zeile dockerfile nur hinzufügen:

CMD run.sh 

für weitere Informationen lesen Sie bitte: https://docs.docker.com/engine/reference/builder/ und die Suche nach ‚CMD‘

stellen Sie sicher, dass die Datei für den Lauf (sonst die richtigen Berechtigungen hat, nach dem Kopieren/Einfügen der Datei RUN chmod +x run.sh

Zusammenfassung machen:

//Dockerfile 

// source image, for example node.js 
FROM some_image 

// copy run.sh script from your local file system into the image (to root dir) 
ADD run.sh/

// add execute privillages to the script file (just in case it doesn't have) 
RUN chmod +x run.sh 

// default behaviour when containter will start 
CMD run.sh 

Hoffnung, die Hilfe ist.

+0

Hi, ItayB, also muss ich in die Docker-Datei hinzufügen und dann den Docker neu aufbauen, oder? – HaipengSu

+0

@HaipengSu korrekt. Ich werde einen Kommentar vor jeder Zeile hinzufügen, damit Sie verstehen, was vor sich geht. Wenn es Ihr Problem löst, akzeptieren Sie bitte diese Antwort :-) – ItayB

+0

Vielen Dank, das ist großartig. Gibt es eine Methode, dies zu tun, ohne das Docker-Image neu zu erstellen? Wie fügt man die Dateipfadvariable in run.sh ein? – HaipengSu

1

Ihre aussehen Dockerfile Bedürfnisse dieser mit COPY

FROM <base_image> 
ADD yourfile.sh/
CMD ['/yourfile.sh']