2016-06-01 3 views
2

Ich benutze Julia v0.4.5 seit einiger Zeit zusammen mit IJulia. Ich versuche jetzt, einen Docker-Container einzurichten, in dem ich den Code in einer meiner JL-Dateien ausführen kann. eine Arbeits Julia in einem Container einzurichten ich den Code in diesem Dockerfile kopiert haben: https://hub.docker.com/r/julialang/julia/~/dockerfile/Docker und Julia - wie man .jl Dateien in einem Container laufen lässt

die oben Verwendung von I julia erhalten mit dem Befehl von meinem Terminal arbeiten

docker run -i -t larajordan/juliatest:0.3 

und dann, wenn der Behälter geöffnet Ich benutze den Befehl

julia 

Julia aus dem Container-Terminal zu öffnen. Wenn ich die Julia REPL verwende, führe ich normalerweise den folgenden Befehl aus, um eine .jl-Datei auszuführen. Wenn ich dies jedoch von der julia REPL innerhalb des Containers versuche, funktioniert es nicht und gibt die folgende Fehlermeldung aus.

julia> include("/home/lara/SourceCode/researchhpc/wind_spacer/julia_learning/variables.jl") 
ERROR: could not open file /home/lara/SourceCode/researchhpc/wind_spacer/julia_learning/variables.jl 
in include at ./boot.jl:261 
in include_from_node1 at ./loading.jl:320 

Ich bin mir ziemlich sicher, dass dies liegt daran, dass der Behälter in sich für die .jl Datei suchen und offensichtlich diese Datei im Container nicht existiert. Ich habe versucht herauszufinden, wie ich meine .jl-Datei in den Contianer kopieren kann, aber es scheint nicht zu funktionieren. Die Methode, die ich versucht habe, ist die folgende, von außerhalb des Behälters:

docker cp filename.jl /var/lib/docker/aufs/mnt/<full docker contianer id>/root/filename.jl 

ich den Fehler

cp: cannot create regular file ‘/var/lib/docker/devicemapper/mnt/a2c36e7f6f08c345a668550974a575384b5a3d465f411d3589bd5a6ac0fad13d/rootfs/root’: No such file or directory 

Eine andere Sache, ich denke, wird ein Problem verursachen, sobald ich die .jl Datei innerhalb des Behälters erhalten ist, dass die .jl-Datei den Befehl 'using' verwendet. Diese Pakete werden weder zu Julia hinzugefügt noch sind sie im Container verfügbar. Ich muss sie der Container-Version von Julia hinzufügen. Dies kann von der Dockerfile aus geschehen, wenn die, die ich benutze, etwas ist; es scheint, dass IJulia-Paket hinzugefügt und in der Dockerfile mit den folgenden Befehlen erstellt wird.

RUN /opt/julia/bin/julia -e 'Pkg.add("IJulia")' 
RUN /opt/julia/bin/julia -e 'Pkg.build("IJulia")' 

Jede Hilfe zu bekommen Pakete aus dem Dockerfile und auch immer .jl Dateien hinzugefügt wird, von der Julia REPL in einem Container zu laufen oder einfach nur vom Terminal im Innern des Behälters würde geschätzt laufen.

Antwort

2

Sie haben den Host-dir in einem Behälter zu montieren https://docs.docker.com/engine/userguide/containers/dockervolumes/#mount-a-host-directory-as-a-data-volume
versuchen

docker run -it -v /home/lara/SourceCode/researchhpc/wind_spacer/julia_learning:/opt/julia_learning larajordan/juliatest:0.3 

dann in Ihrem REPL laufen

julia> include("/opt/julia_learning/variables.jl") 
+0

Dank. Würde das bedeuten, dass ich, wenn ich den Ordner, der auch alle Pakete enthält, einschließe, dass ich Pakete normalerweise verwenden könnte? Ich werde es versuchen. – lara

+0

Entschuldigung, ich denke wir sollten es in 'julia_learning' einbauen, dann kannst du mit Paketen spielen. Ich bin mit Julia nicht so vertraut, aber ich denke, die Hauptbibliothek ist in '/ opt/julia' und wir sollten uns nicht damit befassen – vitr

Verwandte Themen