2016-06-01 98 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

相关问题