为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕沐林林 2022-12-20 16:16:09
我必须按照 Dockerfile 来创建容器映像。这适用于某些脚本。FROM python:3.8-slim-busterCOPY . /workWORKDIR /workRUN apt-get updateRUN apt-get upgrade -yRUN pip install -r requirements.txt但是,我有一个脚本需要访问我的本地下载文件夹。我的理解是容器使用 Dockerfile 所在目录的副本创建一个图像。但是,我不明白如何让容器访问我的下载文件夹。任何帮助都会很棒!
查看完整描述

4 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

您可以采取两种方式:

  • 给它一个体积(推荐)

  • 更改构建上下文(只是为了更好地理解它)

添加卷:

在构建 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 相同的文件夹中。干杯!


查看完整回答
反对 回复 2022-12-20
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

我有一个使用 docker-compose 的解决方案


docker-compose


version: "3"


services:

  myservice:

    build:

      context: . # DOT (".") means in this root directory, have a dockerfile to build the image

    image: myDownloadAppBuild:latest

    container_name: myDownloadApp

    volumes:

      - <HOST-MACHINE-DIR-PATH>:/app # HOST_MACHINE-DIR-PATH E:/MyDownload AND /app path inside container which points to your download folder. 

    ports:

      - <HOST-PORT-ID>:<CONTAINER-PORT-ID>

文件


FROM python:3.8-slim-buster

COPY . /work

WORKDIR /work

VOLUME /app #YOUR DOWNLOAD DIR PATH

RUN apt-get update

RUN apt-get upgrade -y

RUN pip install -r requirements.txt

或者您已经有执行此操作的命令式命令


docker run <OTHER OPTIONS> -v /path/to/downloads:E:/myAppDownloadMount


查看完整回答
反对 回复 2022-12-20
?
函数式编程

TA贡献1807条经验 获得超9个赞

出于安装或共享目的,您可以使用 docker volume 作为 docker 的存储机制。您应该将文件从主机挂载到容器。

docker run -v [host directory path]:[container directory path] -it [image name]

无论您授予对容器的访问权限,此命令都会挂载您的主机目录


查看完整回答
反对 回复 2022-12-20
?
米脂

TA贡献1836条经验 获得超3个赞

您可以将下载文件夹安装到 Docker 服务假设您已经使用图像名称 NAMEOFBUILTDOCKER 构建了服务

docker run -d \
  --name devtest \
  --mount source=pathto/downloads,target=/work \
  NAMEOFYOURBUILTDOCKER

mount 比 —volume 更冗长,但实现相同。这将以分离模式 (-d) 启动您的服务,名称为 devtest,下载内容正在运行。


查看完整回答
反对 回复 2022-12-20
  • 4 回答
  • 0 关注
  • 110 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号