如何使用 Dockerfile 访问我的下载文件夹?

我必须按照 Dockerfile 来创建容器映像。这适用于某些脚本。


FROM python:3.8-slim-buster


COPY . /work


WORKDIR /work



RUN apt-get update


RUN apt-get upgrade -y


RUN pip install -r requirements.txt

但是,我有一个脚本需要访问我的本地下载文件夹。我的理解是容器使用 Dockerfile 所在目录的副本创建一个图像。但是,我不明白如何让容器访问我的下载文件夹。任何帮助都会很棒!


慕沐林林
浏览 139回答 4
4回答

梦里花落0921

您可以采取两种方式:给它一个体积(推荐)更改构建上下文(只是为了更好地理解它)添加卷:在构建 Dockerfile 之后。您可以使用卷运行它。将卷视为主机和容器之间的共享文件夹。您可以在此处查看文档。docker run [OPTIONS] -v /path/to/downloads:/work它将快速构建并快速运行。但是,如果您的文件夹发生变化,您的容器也会发生变化。如果你想持久化你的容器;更改构建上下文:当你建立你的形象时,你就是在给它一个背景。docker build -t my-tag .命令末尾的点表示您运行命令的当前目录。如果您想将/Downloads文件夹提供给上下文,则需要运行如下构建函数。之后,您可以COPY Downloads/ Downloads/在 Dockerfile 中声明。请记住,Dockerfile 中使用本地文件系统的所有路径都是相对于构建上下文的。对于下面的示例,如果您想COPY . /work在答案中执行一行,则需要将其更改为COPY /path/to/your/docker/file/ /work# Go to your users root directory.cd ~/# This will add all of the folders including Downloads to your build context. docker run build -t my-tag -f /path/to/your/docker/file/Dockerfile .请记住,建议您的构建上下文尽可能小。当您将所有文件夹添加到构建上下文时,它会很慢。正如我所说,这是为了实验。但是,如果您真的想要一个快速且持久的解决方案,只需将 /Download 文件夹复制到与 Dockerfile 相同的文件夹中。干杯!

小唯快跑啊

我有一个使用 docker-compose 的解决方案docker-composeversion: "3"services:&nbsp; myservice:&nbsp; &nbsp; build:&nbsp; &nbsp; &nbsp; context: . # DOT (".") means in this root directory, have a dockerfile to build the image&nbsp; &nbsp; image: myDownloadAppBuild:latest&nbsp; &nbsp; container_name: myDownloadApp&nbsp; &nbsp; volumes:&nbsp; &nbsp; &nbsp; - <HOST-MACHINE-DIR-PATH>:/app # HOST_MACHINE-DIR-PATH E:/MyDownload AND /app path inside container which points to your download folder.&nbsp;&nbsp; &nbsp; ports:&nbsp; &nbsp; &nbsp; - <HOST-PORT-ID>:<CONTAINER-PORT-ID>文件FROM python:3.8-slim-busterCOPY . /workWORKDIR /workVOLUME /app #YOUR DOWNLOAD DIR PATHRUN apt-get updateRUN apt-get upgrade -yRUN pip install -r requirements.txt或者您已经有执行此操作的命令式命令docker run <OTHER OPTIONS> -v /path/to/downloads:E:/myAppDownloadMount

函数式编程

出于安装或共享目的,您可以使用 docker volume 作为 docker 的存储机制。您应该将文件从主机挂载到容器。docker&nbsp;run&nbsp;-v&nbsp;[host&nbsp;directory&nbsp;path]:[container&nbsp;directory&nbsp;path]&nbsp;-it&nbsp;[image&nbsp;name]无论您授予对容器的访问权限,此命令都会挂载您的主机目录

米脂

您可以将下载文件夹安装到 Docker 服务假设您已经使用图像名称 NAMEOFBUILTDOCKER 构建了服务docker&nbsp;run&nbsp;-d&nbsp;\ &nbsp;&nbsp;--name&nbsp;devtest&nbsp;\ &nbsp;&nbsp;--mount&nbsp;source=pathto/downloads,target=/work&nbsp;\ &nbsp;&nbsp;NAMEOFYOURBUILTDOCKERmount 比 —volume 更冗长,但实现相同。这将以分离模式 (-d) 启动您的服务,名称为 devtest,下载内容正在运行。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python