2016-04-15 17 views
15

は、私は私がコマンドドッカー:デーモンからのエラー応答:RPCエラー:コード= 2 DESC =「OCIランタイムエラー:execのフォーマットエラー」

を使用して、私のイメージを構築し

FROM cloudera/quickstart 

MAINTAINER abhishek "http://www.foobar.com" 

ADD ./SparkIntegrationTestsAssembly.jar/
ADD ./entrypoint.sh/
ADD ./twitter.avro/

EXPOSE 8020 50070 50010 50020 50075 8030 8031 8032 8033 8088 8040 8042 10020 19888 11000 8888 18080 7077 

RUN chmod +x /entrypoint.sh 
ENTRYPOINT ["/entrypoint.sh"] 

次ドッカファイルを書きました

docker build --tag foobar:auto . 

このコマンドの出力は

Sending build context to Docker daemon 93.1 MB 
Step 1 : FROM cloudera/quickstart 
---> 4239cd2958c6 
Step 2 : MAINTAINER abhishek "http://www.foobar.com" 
---> Running in 3ad11fe4aa77 
---> 22a2f2840475 
Removing intermediate container 3ad11fe4aa77 
Step 3 : ADD ./SparkIntegrationTestsAssembly.jar/
---> 1ebae604e632 
Removing intermediate container 0f047ec885a8 
Step 4 : ADD ./entrypoint.sh/
---> 880cf4ff22aa 
Removing intermediate container 0808ba44c97a 
Step 5 : ADD ./twitter.avro/
---> 6978f2adf422 
Removing intermediate container 43d812aaa3ae 
Step 6 : EXPOSE 8020 50070 50010 50020 50075 8030 8031 8032 8033 8088 8040 8042 10020 19888 11000 8888 18080 7077 
---> Running in af90e145f295 
---> 6fcfb5ad934c 
Removing intermediate container af90e145f295 
Step 7 : RUN chmod +x /entrypoint.sh 
---> Running in 4696faa2d330 
---> 843ee5165937 
Removing intermediate container 4696faa2d330 
Step 8 : ENTRYPOINT /entrypoint.sh 
---> Running in 4caf6e225007 
---> 81cca7ee3198 
Removing intermediate container 4caf6e225007 
Successfully built 81cca7ee3198 

だったが、私は

を使用して、私のコンテナを実行しようとすると、
docker run --hostname=quickstart.cloudera --rm --privileged=true -t -i -p "8020:8020" -p "50070:50070" -p "50010:50010" -p "50020:50020" -p "50075:50075" -p "8030:8030" -p "8031:8031" -p "8032:8032" -p "8033:8033" -p "8088:8088" -p "8040:8040" -p "8042:8042" -p "10020:10020" -p "19888:19888" -p "11000:11000" -p "8888:8888" -p "18080:18080" -p "7077:7077" foobar:auto 

私は私のentrypoint.shファイルがCloudera's documentationによる

/usr/bin/docker-quickstart 
service hadoop-hdfs-namenode restart 
hdfs dfs -mkdir -p input 
hdfs dfs -put /twitter.avro /input/twitter.avro 
spark-submit --class com.abhi.HelloWorld --master local[1] SparkIntegrationTestsAssembly.jar /input/twitter.avro /output 
+1

私はあなたが「CMD」と「RUN」を混乱させるかもしれないと思います。 – larsks

+2

あなたのDockerfileに2つのエラーがあります:CMDがRUNで、EXPOSEにマッピング(ポートだけ)が含まれていないようにしてください –

+0

あなたが提案した変更を加えました...でも同じ問題です。上記のコードを更新しました。更新されたコードを見てください。 –

答えて

27

あなたはあなたの完全なentrypoint.shを投稿しましたか? カーネルは、実行可能ファイルの最初のバイトを調べて、ファイルの種類を認識しようとします。スクリプトの場合、いわゆるshebang行を追加する必要があります。

#!/bin/sh 
/usr/bin/docker-quickstart 
service hadoop-hdfs-namenode restart 
hdfs dfs -mkdir -p input 
hdfs dfs -put /twitter.avro /input/twitter.avro 
spark-submit --class com.abhi.HelloWorld --master local[1] SparkIntegrationTestsAssembly.jar /input/twitter.avro /output 
32ビットArchLinuxにドッキングウィンドウをインストールしようとしたとき、私はこのエラーを得た私の場合
+0

このエラーが発生しましたが、あなたの例を見るだけで解決しました。私のシバンは間違っていた、 '#/ bin/bash'。 – gustavohenke

+0

KubernetesとReadiness Probesの場合も同様です。それらのクレイジーシバンについて覚えておいてください! – altanis

0

のように見えます

docker: Error response from daemon: rpc error: code = 2 desc = "oci runtime error: exec format error". 

あなたはドキュメントから--hostname--priviliged

でそれを起動する必要がありますエラーが出る

docker run --hostname=quickstart.cloudera --privileged=true -t -i [OPTIONS] [IMAGE] /usr/bin/docker-quickstart 

必要なフラグや他のオプションについては説明を次の表にあります。

--hostname=quickstart.cloudera Required: pseudo-distributed configuration assumes this hostname 
--privileged=true     Required: for HBase, MySQL-backed Hive metastore, Hue, Oozie, Sentry, and Cloudera Manager, and possibly others 
-t        Required: once services are started, a Bash shell takes over and will die without this 
-i        Required: if you want to use the terminal, either immediately or attach later 
-p 8888       Recommended: maps the Hue port in the guest to another port on the host 
-p [PORT]       Optional: map any other ports (e.g. 7180 for Cloudera Manager, 80 for a guided tutorial) 
-d        Optional: runs the container in the background 
+0

これを行いました(上記のコードを更新しましたが)同じエラーです –

2

Error response from daemon: rpc error: code = 2 desc = “oci runtime error: exec format error”

(ラズベリーパイ2):あなたは、あなたentrypoint.sh、例えばの一番上にシェバング行を追加する必要があります。代わりに私はHyperioOSを使いました。そしてそれはもっと滑らかになり、インストールするのがずっと速かったです。しかし最終的には、ほとんどのドッカー画像は32ビットアーキテクチャと互換性がなく、they outline thisがこのエラーを起こす可能性があります。

Here we run Docker on a Raspberry Pi. So the CPU architecture here is ARM rather than x86/x64 by Intel or AMD. Thus, Docker-based apps you use have to be packaged specifically for ARM architecture! Docker-based apps packaged for x86/x64 will not work and will result in an error

+0

私はHyperioを試しましたが、私はまだ上記のエラーが発生しています。 –

+1

あなたは正しいです。 x86チップアーキテクチャ用に構築されたドッカーイメージを使用している場合、Hyperiotはエラーを解決しません。結局のところ、ARMチップセット上で動作するものはARMチップでコンパイルする必要があるため、私はあきらめました。これは、コンテナ全体を、ベースイメージに至るまで、具体的に構築する必要があることを意味します。また、ほとんどのコンテナはARM用に構築されていません – Erich

関連する問題