【问题标题】:Error :- Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "错误:- 来自守护程序的错误响应:OCI 运行时创建失败:container_linux.go:349:启动容器进程导致“
【发布时间】:2020-07-13 19:20:44
【问题描述】:

我请求一个巨大的帮助。在过去的几天里,我一直被困在这个问题之下。如果有人帮忙,那就太好了。回到这个问题。我已经使用以下代码(Docker-Apache spark)安装了一个 docker 和 docker 容器。


    Docker File:-
    FROM debian:stretch
    MAINTAINER Getty Images "https://github.com/gettyimages"

    RUN apt-get update \
     && apt-get install -y locales \
     && dpkg-reconfigure -f noninteractive locales \
     && locale-gen C.UTF-8 \
     && /usr/sbin/update-locale LANG=C.UTF-8 \
     && echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen \
     && locale-gen \
     && apt-get clean \
     && rm -rf /var/lib/apt/lists/*

    # Users with other locales should set this in their derivative image
    ENV LANG en_US.UTF-8
    ENV LANGUAGE en_US:en
    ENV LC_ALL en_US.UTF-8

    RUN apt-get update \
     && apt-get install -y curl unzip \
        python3 python3-setuptools \
     && ln -s /usr/bin/python3 /usr/bin/python \
     && easy_install3 pip py4j \
     && apt-get clean \
     && rm -rf /var/lib/apt/lists/*

    # http://blog.stuart.axelbrooke.com/python-3-on-spark-return-of-the-pythonhashseed
    ENV PYTHONHASHSEED 0
    ENV PYTHONIOENCODING UTF-8
    ENV PIP_DISABLE_PIP_VERSION_CHECK 1

    # JAVA
    RUN apt-get update \
     && apt-get install -y openjdk-8-jre \
     && apt-get clean \
     && rm -rf /var/lib/apt/lists/*

    # HADOOP
    ENV HADOOP_VERSION 3.0.0
    ENV HADOOP_HOME /usr/hadoop-$HADOOP_VERSION
    ENV HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
    ENV PATH $PATH:$HADOOP_HOME/bin
    RUN curl -sL --retry 3 \
      "http://archive.apache.org/dist/hadoop/common/hadoop-$HADOOP_VERSION/hadoop-$HADOOP_VERSION.tar.gz" \
      | gunzip \
      | tar -x -C /usr/ \
     && rm -rf $HADOOP_HOME/share/doc \
     && chown -R root:root $HADOOP_HOME

    # SPARK
    ENV SPARK_VERSION 2.4.1
    ENV SPARK_PACKAGE spark-${SPARK_VERSION}-bin-without-hadoop
    ENV SPARK_HOME /usr/spark-${SPARK_VERSION}
    ENV SPARK_DIST_CLASSPATH="$HADOOP_HOME/etc/hadoop/*:$HADOOP_HOME/share/hadoop/common/lib/*:$HADOOP_HOME/share/hadoop/common/*:$HADOOP_HOME/share/hadoop/hdfs/*:$HADOOP_HOME/share/hadoop/hdfs/lib/*:$HADOOP_HOME/share/hadoop/hdfs/*:$HADOOP_HOME/share/hadoop/yarn/lib/*:$HADOOP_HOME/share/hadoop/yarn/*:$HADOOP_HOME/share/hadoop/mapreduce/lib/*:$HADOOP_HOME/share/hadoop/mapreduce/*:$HADOOP_HOME/share/hadoop/tools/lib/*"
    ENV PATH $PATH:${SPARK_HOME}/bin
    RUN curl -sL --retry 3 \
      "https://archive.apache.org/dist/spark/spark-${SPARK_VERSION}/${SPARK_PACKAGE}.tgz" \
      | gunzip \
      | tar x -C /usr/ \
     && mv /usr/$SPARK_PACKAGE $SPARK_HOME \
     && chown -R root:root $SPARK_HOME

    WORKDIR $SPARK_HOME
    CMD ["bin/spark-class", "org.apache.spark.deploy.master.Master"]

命令:

ubuntu@ip-123.43.11.136:~$ sudo docker run -it --rm  -v $(pwd):/home/ubuntu sparkimage /home/ubuntu bin/spark-submit ./count.py

下面出现错误

Error :-  Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"/home/ubuntu\": permission denied": unknown.

有人可以帮我解决问题吗?我浏览了几个链接,但运气不好仍然无法解决问题。

ERRO[0001] error waiting for the container: context cancelled

【问题讨论】:

  • 图片名称后的所有内容都被解释为命令;就好像你启动了容器然后运行了/home/ubuntu bin/spark-submit ./count.py,它失败了,因为/home/ubuntu 是一个目录而不是一个命令。开头的/home/ubuntu 只是一个错字吗?你的意思是去别的地方吗?
  • 能否请您提供确切的语法?

标签: docker


【解决方案1】:

在图像sparkimage 之后传递的所有内容都被视为 Docker Entrypoint 的参数。

例如

Entrypoint ["node"]

所以当你开始

docker run -it my_image app.js 

现在这里app.js 将成为node 的参数,它将以app.js 开头,docker 会将它们视为node app.js

因此,您在 docker run 命令中将无效选项传递给图像,因为您的 Dockefile 中没有入口点并且命令变为

CMD ["/home/ubuntu bin/spark-submit ./count.py"]

这是/home/ubuntu权限被拒绝的抛出错误。

你可以试试这两种组合。

Etnrypoint ["bin/spark-class", "org.apache.spark.deploy.master.Master"]

使用运行命令。

sudo docker run -it --rm  -v $(pwd):/home/ubuntu sparkimage /home/ubuntu bin/spark-submit ./count.py

CMD ["bin/spark-class", "org.apache.spark.deploy.master.Master","/home/ubuntu bin/spark-submit ./count.py"] 

使用 docker run 命令

sudo docker run -it --rm  -v $(pwd):/home/ubuntu sparkimage 

【讨论】:

    【解决方案2】:

    问题已解决。正确的安装路径并执行,它工作正常,没有任何问题。

    【讨论】:

      猜你喜欢
      • 2021-02-20
      • 2021-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-28
      • 1970-01-01
      • 2018-11-06
      • 2019-04-30
      相关资源
      最近更新 更多