Docker和Julia – 如何让.jl文件在容器中运行

我一直在使用Julia v0.4.5,现在和IJulia一起。 我现在正在尝试设置一个Docker容器,我可以在其中一个.jl文件中运行代码。 在容器中设置一个工作的Julia我已经复制了这个Dockerfile中的代码: https ://hub.docker.com/r/julialang/julia/~/dockerfile/

使用上述我得到朱莉亚从我的terminal与命令工作

docker run -i -t larajordan/juliatest:0.3 

然后当容器打开我使用命令

 julia 

从集装箱docker打开茱莉亚。 当使用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文件使用命令“使用”。 这些软件包不会被添加到Julia中,也可以在容器中使用。 我将不得不将它们添加到容器的Julia版本。 这可以从Dockerfile完成,如果我正在使用的是任何东西, 看起来好像IJulia包是用下面的命令在Dockerfile中添加和构build的。

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

任何关于从Dockerfile中获取包的帮助,以及从容器中的Julia REPL运行.jl文件,或者只是从容器内的terminal运行。

您必须将主机目录安装在容器中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") 
Interesting Posts