无法将数据从 Docker 容器 运行 julia 应用程序写入本地存储
Cannot write data from Docker Container running julia application to local storage
我有与 docker 容器从本地磁盘写入和读取相关的查询。
例如,我有一个 julia 应用程序,它使用以下一组函数写入和读取处理后的数据:
function store(data::Array, ref::String)
name = test_folder
try
create_dir(mkdir("$(homedir())/$name"))
catch
@warn "directory exists"
end
open("$(mkpath("$(joinpath(homedir(),"test_folder"))\$ref\$ref.jls", "w") do io
serialize(io, data)
end
end
function read_storage(ref)
data = open(joinpath(homedir(), "test_folder\$ref\$ref.jls")) do io
data = deserialize(io)
return data
end
return data
end
为了将此应用程序容器化(在端口 8000 上公开),我创建了一个 docker 文件,如下所示:
FROM julia:1.6
WORKDIR /home
ENV Version 1
ADD . /home
RUN julia app.jl
ENTRYPOINT ["julia", "-e", "app.run()"
然而,在 运行 这个容器并将其暴露到某个端口时,这不会将数据写入我的本地 homedir()
甚至当我试图在 exec
模式 test_folder
无法在任何地方找到。
请问是什么原因造成的?
谢谢,期待建议!
使用 bind mount。例如在 linux 主机上:
docker -v $HOME/test_folder:/home/test_folder image_name
:
前的路径为本地宿主机目录,:
分隔符后定义的路径为容器目录路径
我有与 docker 容器从本地磁盘写入和读取相关的查询。 例如,我有一个 julia 应用程序,它使用以下一组函数写入和读取处理后的数据:
function store(data::Array, ref::String)
name = test_folder
try
create_dir(mkdir("$(homedir())/$name"))
catch
@warn "directory exists"
end
open("$(mkpath("$(joinpath(homedir(),"test_folder"))\$ref\$ref.jls", "w") do io
serialize(io, data)
end
end
function read_storage(ref)
data = open(joinpath(homedir(), "test_folder\$ref\$ref.jls")) do io
data = deserialize(io)
return data
end
return data
end
为了将此应用程序容器化(在端口 8000 上公开),我创建了一个 docker 文件,如下所示:
FROM julia:1.6
WORKDIR /home
ENV Version 1
ADD . /home
RUN julia app.jl
ENTRYPOINT ["julia", "-e", "app.run()"
然而,在 运行 这个容器并将其暴露到某个端口时,这不会将数据写入我的本地 homedir()
甚至当我试图在 exec
模式 test_folder
无法在任何地方找到。
请问是什么原因造成的? 谢谢,期待建议!
使用 bind mount。例如在 linux 主机上:
docker -v $HOME/test_folder:/home/test_folder image_name
:
前的路径为本地宿主机目录,:
分隔符后定义的路径为容器目录路径