【问题标题】:Issue when building a Kubernetes Docker container for Spark using the Dockerfile provided with Spark source使用 Spark 源提供的 Dockerfile 为 Spark 构建 Kubernetes Docker 容器时出现问题
【发布时间】:2019-07-11 14:28:59
【问题描述】:

我正在尝试使用 Spark 源代码中提供的说明为 Spark 构建 Kubernetes 容器。我正在使用此处提供的 Docker 文件:https://github.com/apache/spark/blob/branch-2.4/resource-managers/kubernetes/docker/src/main/dockerfiles/spark/Dockerfile

但是,Dockerfile 指定的路径与 Spark 源代码的文件夹结构不匹配。例如,

  1. 源代码中没有“jar”目录。但是 docker 文件会执行 'COPY jars /opt/spark/jars'
  2. entrypoint.sh 位于 'resource-managers/kubernetes/docker/src/main/dockerfiles/spark/entrypoint.sh' 但 Docker 文件尝试从 "COPY ${img_path}/spark/entrypoint.sh /opt/" where "ARG img_path=kubernetes/dockerfiles"
  3. 同样,“COPY ${k8s_tests} /opt/spark/tests”的源目录似乎也不正确。

我错过了什么?

【问题讨论】:

  • 为什么不从hub.docker.com/r/sequenceiq/spark 拉取图像而不是自己构建呢?
  • 我删除了kubernetes 标签,因为我实际上没有在问题中看到任何与 Kubernetes 相关的内容。

标签: apache-spark dockerfile


【解决方案1】:

回答“我错过了什么?”的问题。将是他们没有使用该目录中的普通docker build -t <tag> .。相反,他们在https://github.com/apache/spark/blob/6c2d351f5466d42c4d227f5627bd3709c266b5ce/bin/docker-image-tool.sh 有一个构建脚本,除其他外,该脚本会检查 jar 是否是按照https://github.com/apache/spark/blob/6c2d351f5466d42c4d227f5627bd3709c266b5ce/bin/docker-image-tool.sh#L155-L157 首先构建的

除此之外,它实际上创建了一个文件夹结构并将脚本和相关文件复制到https://github.com/apache/spark/blob/6c2d351f5466d42c4d227f5627bd3709c266b5ce/bin/docker-image-tool.sh#L89-L127,这就是为什么您还会看到因缺少entrypoint.sh 和其他参数而失败的原因。

编辑:

我之前添加了一些关于使用@cookiemonster 提到的官方图片的内容,但后来我注意到它实际上并不是官方图片。我找不到 Apache 发布的任何官方图片,所以我删除了该评论。您绝对可以使用其他人构建的图像。但是您可以做出这个决定,因为我不想推荐任何我无法审查的随机图像,如果它们不受上游支持的话。

【讨论】:

  • 是的!这是完全正确的。这里有更多细节:我下载了源代码并尝试运行docker build -t spark:latest -f kubernetes/dockerfiles/spark/Dockerfile . 这不是要那样做的。您首先必须使用 -PKubernetes 运行 ./make-distribution。这为您提供了 .tgz 格式的 Spark 发行版。解压后会看到Dockerfile所期望的目录结构
  • @buckeye13 你能构建镜像吗?
猜你喜欢
  • 2020-08-01
  • 2016-05-08
  • 2022-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-30
  • 2019-10-22
  • 1970-01-01
相关资源
最近更新 更多