如何从 docker 容器上的代码访问 docker 卷文件
How ro access docker volume files from the code on docker container
我已经用这样的命令创建了一个 docker 卷
docker run -ti --rm -v TestVolume1:/testvolume1 ubuntu
然后我在那里创建了一个名为 TestFile.txt 的文件并向其中添加了文本
我还有一个带有 Dockerfile 的简单“Hello world”.net 核心应用程序
FROM mcr.microsoft.com/dotnet/aspnet:6.0
COPY bin/Release/net6.0/publish/ ShareFileTestInstance1/
WORKDIR /ShareFileTestInstance1
ENTRYPOINT ["dotnet", "ShareFileTestInstance1.dll"]
我使用
发布了它
dotnet publish -c Release
然后运行
docker build -t counter-image -f Dockerfile .
终于执行了
docker run -it --rm --name=counter-container counter-image -v TestVolume1:/testvolume1 ubuntu
到 运行 我的应用 docker 音量
所以我想要从容器中的代码访问卷中的文件(在我的例子中是“TestFile.txt”)。
例如
Console.WriteLine(File.Exists("WHAT FILE PATH HAS TO BE HERE") ? "File exists." : "File does not exist.");
是否也可以将所有这些东西组合到一个 Dockerfile 中?我想接下来再添加一个容器并连接到卷以在那里保存数据。
docker run
的参数可以是 docker 的参数,也可以是 docker 容器中程序 运行 的参数。 docker 的参数在之前 图像名称和容器中程序的参数在之后 图像名称。
卷映射是 docker 的一个参数,因此它应该位于图像名称之前。所以而不是
docker run -it --rm --name=counter-container counter-image -v TestVolume1:/testvolume1 ubuntu
你应该做
docker run -it --rm --name=counter-container -v TestVolume1:/testvolume1 counter-image
当您这样做时,您的程序应该可以在 /testvolume1/TestFile.txt
.
访问您的文件
无法按照您的要求在 Dockerfile 中进行映射。 docker 主机到 docker 主机的映射可能不同,因此需要在 run-time.
处指定它们
我已经用这样的命令创建了一个 docker 卷
docker run -ti --rm -v TestVolume1:/testvolume1 ubuntu
然后我在那里创建了一个名为 TestFile.txt 的文件并向其中添加了文本
我还有一个带有 Dockerfile 的简单“Hello world”.net 核心应用程序
FROM mcr.microsoft.com/dotnet/aspnet:6.0
COPY bin/Release/net6.0/publish/ ShareFileTestInstance1/
WORKDIR /ShareFileTestInstance1
ENTRYPOINT ["dotnet", "ShareFileTestInstance1.dll"]
我使用
发布了它dotnet publish -c Release
然后运行
docker build -t counter-image -f Dockerfile .
终于执行了
docker run -it --rm --name=counter-container counter-image -v TestVolume1:/testvolume1 ubuntu
到 运行 我的应用 docker 音量
所以我想要从容器中的代码访问卷中的文件(在我的例子中是“TestFile.txt”)。
例如
Console.WriteLine(File.Exists("WHAT FILE PATH HAS TO BE HERE") ? "File exists." : "File does not exist.");
是否也可以将所有这些东西组合到一个 Dockerfile 中?我想接下来再添加一个容器并连接到卷以在那里保存数据。
docker run
的参数可以是 docker 的参数,也可以是 docker 容器中程序 运行 的参数。 docker 的参数在之前 图像名称和容器中程序的参数在之后 图像名称。
卷映射是 docker 的一个参数,因此它应该位于图像名称之前。所以而不是
docker run -it --rm --name=counter-container counter-image -v TestVolume1:/testvolume1 ubuntu
你应该做
docker run -it --rm --name=counter-container -v TestVolume1:/testvolume1 counter-image
当您这样做时,您的程序应该可以在 /testvolume1/TestFile.txt
.
无法按照您的要求在 Dockerfile 中进行映射。 docker 主机到 docker 主机的映射可能不同,因此需要在 run-time.
处指定它们