.NET核心docker-linux容器。查找生成项目的特定文件

.NET核心docker-linux容器。查找生成项目的特定文件,docker,.net-core,containers,Docker,.net Core,Containers,我正在使用.NETCore和docker,docker是在Windows10上构建的Linux容器类型 我在Windows中运行程序进行测试,并在Linux中进行生产 我在docker中有一个文本文件:sample.txt 我想在docker中找到文本文件的确切位置 我分别使用docker compose build和docker compose up构建并运行docker 通过代码中的某个循环使其运行,并打开另一个命令行提示符,然后运行: docker exec -t -i <DOCKE

我正在使用.NETCore和docker,docker是在Windows10上构建的Linux容器类型

我在Windows中运行程序进行测试,并在Linux中进行生产

我在docker中有一个文本文件:sample.txt

我想在docker中找到文本文件的确切位置

我分别使用docker compose build和docker compose up构建并运行docker

通过代码中的某个循环使其运行,并打开另一个命令行提示符,然后运行:

docker exec -t -i <DOCKER_ID> /bin/sh
结果是:

bin boot dev docker-entrypoint.sh etc home lib lib64媒体 mnt opt plugins proc root运行sbin srv sys tmp usr var

运行命令:

find . -print | grep -i 'sample.txt'
返回输出:

find: ‘./proc/1/map_files’: Permission denied
find: ‘./proc/105/map_files’: Permission denied
find: ‘./proc/172/map_files’: Permission denied
find: ‘./proc/280/map_files’: Permission denied
find: ‘./proc/321/map_files’: Permission denied
find: ‘./proc/322/map_files’: Permission denied
如何在docker中找到文件sample.txt的确切位置

可以是任何文件

另外-我可以从docker本身运行docker外部的可执行linux文件吗


谢谢。

首先,您可以使用以下命令:

find / -name sample.txt
如果sample.txt位于文件系统中,此命令将搜索所有sample.txt


对于第二个问题,我将使用一个卷,该卷映射到主机中的特定文件夹,并映射到docker容器中的文件夹,之后,您可以轻松地转到docker容器中的位置并运行它。

在运行时构建docker映像时可以看到路径:“运行dotnet发布…”或“运行dotnet构建…”

在docker文件中,只需将COPY命令放入linux路径

通常,路径是编译到/app时的路径:

/app/runtimes/linux-x64/native

DockerFile中的相关行:

...
RUN dotnet publish MyProj.csproj --no-cache -c Release -o /app
...
COPY MyProj/Objects/MyLib/Linux /app/runtimes/linux-x64/native
...
RUN dotnet publish MyProj.csproj --no-cache -c Release -o /app
...
COPY MyProj/Objects/MyLib/Linux /app/runtimes/linux-x64/native