【问题标题】:Dockerfile cannot run cp command to move file inside containerDockerfile 无法运行 cp 命令在容器内移动文件
【发布时间】:2019-06-27 14:49:07
【问题描述】:

您好,我正在尝试下载容器内的文件并将该文件移动到容器内的特定位置。

RUN wget https://storage.googleapis.com/hadoop-lib/gcs/gcs-connector-latest-hadoop2.jar 
RUN cp gcs-connector-latest-hadoop2.jar /opt/spark-2.2.1-bin-hadoop2.7/jars/
RUN cp /opt/spark-2.2.1-bin-hadoop2.7/conf/spark-defaults.conf.template /opt/spark-2.2.1-bin-hadoop2.7/conf/spark-defaults.conf
RUN echo "spark.hadoop.google.cloud.auth.service.account.enable true" > /opt/spark-2.2.1-bin-hadoop2.7/conf/spark-defaults.conf

但这失败了,错误如下:

Step 44/46 : RUN cp gcs-connector-latest-hadoop2.jar /opt/spark-2.2.1-bin-hadoop2.7/jars/
 ---> Running in 8c81d9871377
cp: cannot create regular file '/opt/spark-2.2.1-bin-hadoop2.7/jars/': No such file or directory
The command '/bin/sh -c cp gcs-connector-latest-hadoop2.jar /opt/spark-2.2.1-bin-hadoop2.7/jars/' returned a non-zero code: 1

EDIT-1 Error Screenshot

我已经尝试了提到的解决方案,现在我收到以下错误:

删除中间容器 e885431017e8 步骤 43/44:复制 /opt/spark-2.2.1-bin-hadoop2.7/conf/spark-defaults.conf.template /opt/spark-2.2.1-bin-hadoop2.7/conf/spark-defaults .conf lstat opt/spark-2.2.1-bin-hadoop2.7/conf/spark-defaults.conf.template: 没有这样的文件或目录

【问题讨论】:

  • 你能发布整个 dockerfile 吗?

标签: docker dockerfile


【解决方案1】:

您的容器中是否已有路径/opt/spark-2.2.1-bin-hadoop2.7/jars/

如果在cp命令前不加这个:

mkdir -p /opt/spark-2.2.1-bin-hadoop2.7/jars/

然后尝试像这样复制:

cp gcs-connector-latest-hadoop2.jar /opt/spark-2.2.1-bin-hadoop2.7/jars/gcs-connector-latest-hadoop2.jar

修改后:

你运行mkdir 并尝试从中复制,因为文件夹是空的,所以这应该不起作用!!

【讨论】:

  • 是的,我有这个路径,只是想在 /opt/spark-2.2.1-bin-hadoop2.7/jars/ 中添加这个 jar
  • 查看问题中的更新图像。我尝试了您的建议,但仍然遇到相同的错误。
  • 看来您创建了一个目录并想从中复制!文件夹为空
【解决方案2】:

为什么不直接下载到文件夹?并使用 COPY 复制容器内的文件COPY

RUN wget https://storage.googleapis.com/hadoop-lib/gcs/gcs-connector-latest-hadoop2.jar -P /opt/spark-2.2.1-bin-hadoop2.7/jars/
COPY /opt/spark-2.2.1-bin-hadoop2.7/conf/spark-defaults.conf.template /opt/spark-2.2.1-bin-hadoop2.7/conf/spark-defaults.conf

假设:/opt/spark-2.2.1-bin-hadoop2.7/jars/folder 存在

【讨论】:

  • 我已经尝试了上述解决方案,并且取得了部分成功。我能够在提到的位置下载 jar,而我无法将文件复制为(没有这样的文件或目录)
  • 那是 spark-2.2.1-bin-hadoop2.7 文件夹,它基本上是软链接而不是真正的目的地。我已经纠正了。感谢好友的帮助。
猜你喜欢
  • 1970-01-01
  • 2019-07-17
  • 2019-11-08
  • 2019-01-28
  • 2020-03-19
  • 2017-11-12
  • 1970-01-01
  • 2022-01-18
  • 1970-01-01
相关资源
最近更新 更多