Docker: réponse d'erreur du démon: erreur rpc: code = 2 desc = "erreur d'exécution oci: erreur de format exec"
J'ai écrit la suite de docker fichier
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"]
j'ai construit mon image à l'aide de la commande
docker build --tag foobar:auto .
La sortie de cette commande a été
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
Mais quand j'essaie de lancer mon conteneur à l'aide de
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
J'obtiens une erreur
docker: Error response from daemon: rpc error: code = 2 desc = "oci runtime error: exec format error".
Mon entrypoint.sh fichier ressemble à
/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
source d'informationauteur Knows Not Much
Vous devez vous connecter pour publier un commentaire.
Avez-vous envoyer votre
entrypoint.sh
?Le noyau essaie de reconnaître le type de fichier en regardant les premiers octets du fichier exécutable. Pour les scripts, vous devez ajouter un soi-disant shebang ligne. Vous pourriez avoir besoin d'ajouter une ligne shebang tout en haut de votre
entrypoint.sh
, par exemple:Dans mon cas j'ai eu cette erreur lorsque vous essayez d'installer docker sur un 32 bits ArchLinux (un raspberry pi 2). Au lieu de cela j'ai utilisé HyperioOS et il est allé beaucoup plus lisse et est donc beaucoup plus rapide à installer. Mais en fin de compte, la plupart des images docker ne sont pas compatibles avec les architectures 32 bit et ils présentent cette comme une raison possible pour obtenir cette erreur.
Selon Cloudera de la documentation vous devez le démarrer avec
--hostname
et--priviliged
De la documentation
Explication pour les drapeaux et les autres options sont dans le tableau suivant: