docker - 对Docker镜像中的复制文件有误解

标签 docker pyspark jupyter-notebook localhost containers

您好,有人可以帮我将docker(我是初学者)主机文件复制到我的jupyter / pyspark-notebook图像中。我已将这本笔记本从docker上拉下,以供公众使用。

我创建了一个包含此文件的Dockerfile。

FROM jupyter/pyspark-notebook:latest
ADD /home/abdoulaye/Documents/M2BIGDATA/Jaziri /bin/bash

我已将/bin/bash更改为.,但看不到任何内容。
当我执行docker built时,就像复制文件一样,如下面的输出所示。
img
当我去笔记本电脑时,我确实发现了文件夹。如果可以找到这些复制的文件夹,我会检查快照,但是我很困惑。

显然,我在docker中有一个正在运行的笔记本,在y导航器中使用了它,但无法加载数据。我喜欢将数据复制到可以在笔记本中访问的位置。 img2

最佳答案

您不能使用绝对路径进行复制,该路径应相对于Dockerfile,因此Dockerfile中此路径的/home/abdoulaye/Documents/M2BIGDATA/Jaziri不正确。将文件复制到Dockerfile上下文,然后像复制

ADD M2BIGDATA/Jaziri /work

现在,第一件事,您不应该将文件从主机复制到可执行文件目录。

例如,
FROM alpine
copy hello.txt /bin/sh


如果您像这样进行复制,由于shbash将被替换或损坏,因此在容器内运行命令会产生问题。

第二,在构建具有无效上下文的Docker镜像时,它应该与Dockerfile所在的位置相同,因此最好运行放置Dockerfile的目录。
docker build -t my-jupyter .

第三,不要在容器内运行cp命令将文件从主机复制到容器。
docker cp /home/abdoulaye/Documents/M2BIGDATA/Jaziri container_id:/work

它将您的文件复制到容器的/work路径。

关于docker - 对Docker镜像中的复制文件有误解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58599967/

相关文章:

apache-spark - 如何在 Spark 3.0+ 中获取星期几?

javascript - 如何在Javascript中正确使用Jupyter笔记本的kernel.execute方法(计时问题)?

Docker - apt-get 连接在 Debian 上被拒绝,但在 Ubuntu 上可以工作

Docker 组成错误 : container-linux. go: 348

vagrant - 带 Knife 的Octohost在裸机上独奏? (UserError:未安装 Vagrant )

pandas - 将带有日期列的 pyspark DataFrame 转换为 Pandas 会导致 AttributeError

php - 安全地存储从Docker容器访问的MySQL凭据

dictionary - pyspark 中的累加器,字典作为全局变量

javascript - 无法将 d3js 运行到网站(jupyter notebook)

html - 停止 jupyter notebook 在 pandas html 表输出中包装单元格内容