我和IJulia一直在使用Julia v0.4.5一段时间了。我现在正在尝试设置一个Docker容器,我可以在其中运行我的一个.jl文件中的代码。要在容器中设置工作Julia,我已经复制了此Dockerfile中的代码:https://hub.docker.com/r/julialang/julia/~/dockerfile/
使用上面的命令我可以通过命令
从我的终端工作docker run -i -t larajordan/juliatest:0.3
然后当容器打开时我使用命令
julia
从容器的终端打开Julia。使用Julia REPL时,我通常只执行以下命令来运行.jl文件。当我从容器内的julia 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中添加包以及从容器内的Julia REPL运行的.jl文件或只是从容器内的终端运行的帮助都将不胜感激。
答案 0 :(得分: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")