我使用.NET Core和Docker是Linux容器类型(在Windows 10上构建)。
我运行我的程序在Windows中进行测试,并在Linux中进行生产。
我有一个文本文件:docker中的“sample.txt”。
我想在docker中找到文本文件的确切位置。
我分别使用“docker-compose build”和“docker-compose up”构建并运行了docker。
保持运行(通过我的代码中的一些循环),并打开另一个命令行提示符,然后运行:
docker exec -t -i <DOCKER_ID> /bin/sh
然后运行:
ls /
结果是:
bin boot dev docker-entrypoint.sh等home lib lib64 media mnt opt plugins proc root run 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文件吗?
谢谢。
构建docker镜像时可以看到路径(运行时:'run dotnet publish ...'或'run dotnet build ...'
在docker文件中只需将一个“COPY”命令放到linux路径中。
通常路径是(编译为/ app时):
/应用/运行时/ Linux的X64 /本地
DockerFile中的相关行:
...
RUN dotnet publish MyProj.csproj --no-cache -c Release -o /app
...
COPY MyProj/Objects/MyLib/Linux /app/runtimes/linux-x64/native
首先,您可以使用以下命令:
find / -name sample.txt
如果它位于文件系统中,此命令将搜索所有sample.txt。
对于第二个问题,我将使用映射到主机内特定文件夹的卷到docker容器内的文件夹,然后您可以轻松地转到docker容器中的位置并运行它。