对 docker 图像中复制文件的误解

Mis-understand of copy file in docker images

你好有人可以帮助我将 docker(我是初学者)主机文件复制到我的 jupyter/pyspark-notebook 图像中。我从 docker 中提取了此笔记本,因为 public 可用。

我创建了一个包含这个的 Dockerfile。

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

我已将 /bin/bash 更改为 .,但没有任何内容可见。 当我执行 docker built 时,就像它复制文件一样,如下面的输出所示。 当我打开我的笔记本时,我确实记下了找到的文件夹。如果我能找到这些复制的文件夹,我会检查我的快照,但我很困惑。

明确地说,我的 docker 中有一个 运行 笔记本,我在 y 导航器中使用它,但我无法加载数据。我喜欢将数据复制到可以在笔记本中访问的地方。

不能使用绝对路径复制,路径应该是相对于Dockerfile的路径,所以/home/abdoulaye/Documents/M2BIGDATA/JaziriDockerfile里面的这个路径是不正确的。将文件复制到 Dockerfile 上下文,然后像

一样复制
ADD M2BIGDATA/Jaziri /work

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

例如,

FROM alpine
copy hello.txt /bin/sh

如果你像这样复制,它会给容器内的 运行 命令带来问题,因为 shbash 将被替换或损坏。

2,当您使用无效上下文构建 docker 图像时,它应该与您的 Dockerfile 所在的位置相同,因此最好 运行 您放置 Dockerfile 的目录。

docker build -t my-jupyter .

3,你不应该在容器内使用 运行 cp 命令将文件从主机复制到容器。

docker cp /home/abdoulaye/Documents/M2BIGDATA/Jaziri container_id:/work

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