2016-06-01 101 views
2

我一直在使用Julia v0.4.5一段時間,現在還有IJulia。我現在正在嘗試設置一個Docker容器,我可以在其中一個.jl文件中運行代碼。要建立工作朱莉婭容器內我抄在這Dockerfile代碼:https://hub.docker.com/r/julialang/julia/~/dockerfile/Docker和Julia - 如何讓.jl文件在容器中運行

使用上面我得到朱麗婭從我的終端用命令

docker run -i -t larajordan/juliatest:0.3 

,然後工作容器打開時我使用命令

julia 

從集裝箱碼頭打開Julia。當使用Julia REPL時,我通常只執行下面的命令來運行.jl文件。當我從容器內的茱莉亞REPL嘗試此操作時,它不起作用,並提供以下錯誤消息。

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 

我敢肯定,這是因爲容器內尋找自己的.jl文件,顯然這個文件並不在容器內存在。我試圖找出如何將我的.jl文件複製到contianer中,但它似乎不起作用。我已經試過的方法如下,從容器外部:

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

我得到的錯誤

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

我想另一件事會引起一個問題,一旦我得到容器內的.jl文件是.jl文件使用命令'using'。這些軟件包不會被添加到Julia中,也可以在容器中使用。我必須將它們添加到容器的Julia版本中。這可以從Dockerfile完成,如果我使用的是任何事情;它看起來像IJulia包是用下面的命令在Dockerfile中添加和構建的。

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

上獲得要從Dockerfile中添加的包,也越來越.jl文件從朱莉婭REPL一個容器內運行,或者只是從容器內的終端中運行任何幫助,將不勝感激。

回答

2

您必須安裝主機目錄中的容器https://docs.docker.com/engine/userguide/containers/dockervolumes/#mount-a-host-directory-as-a-data-volume
嘗試

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

然後在REPL

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

謝謝運行。這是否意味着如果我包含包含所有包的文件夾,那麼我可以正常使用包?我會試一試。 – lara

+0

對不起,我想我們應該將它掛載到'julia_learning'中,然後你可以玩包。我對Julia並不熟悉,但我認爲主要的lib在'/ opt/julia'中,我們不應該干涉它 – vitr

相關問題