hub - docker windows container
Docker: respuesta de error del daemon: error de rpc: código=2 desc="error de tiempo de ejecución de oci: error de formato exec" (3)
Respuesta de error del daemon: error de rpc: código = 2 desc = "error de tiempo de ejecución de oci: error de formato exec"
En mi caso recibí este error al intentar instalar la ventana acoplable en un ArchLinux de 32 bits (una frambuesa pi 2). En su lugar, utilicé HyperioOS y fue mucho más suave y mucho más rápido de instalar. Pero al final, la mayoría de las imágenes de la ventana acoplable no son compatibles con las arquitecturas de 32 bits y lo describen como una posible razón para obtener este error.
Aquí ejecutamos Docker en una Raspberry Pi. Así que la arquitectura de la CPU aquí es ARM en lugar de x86 / x64 por Intel o AMD. Por lo tanto, las aplicaciones basadas en Docker que usted utiliza deben empaquetarse específicamente para la arquitectura ARM. Las aplicaciones basadas en Docker empaquetadas para x86 / x64 no funcionarán y darán como resultado un error
Escribí el siguiente archivo docker
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"]
construí mi imagen usando el comando
docker build --tag foobar:auto .
La salida de este comando fue
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
Pero cuando intento correr mi contenedor usando
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
Me sale un error
docker: Error response from daemon: rpc error: code = 2 desc = "oci runtime error: exec format error".
Mi archivo entrypoint.sh se parece a
/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
¿ entrypoint.sh
tu entrada completa entrypoint.sh
? El kernel intenta reconocer el tipo de archivo mirando los primeros bytes del ejecutable. Para los scripts es necesario agregar una línea llamada shebang . Es posible que deba agregar una línea shebang en la parte superior de su entrypoint.sh
, por ejemplo:
#!/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
De acuerdo con la documentación de Cloudera, debe comenzar con --hostname
y --priviliged
De los docs
docker run --hostname=quickstart.cloudera --privileged=true -t -i [OPTIONS] [IMAGE] /usr/bin/docker-quickstart
La explicación de los indicadores necesarios y otras opciones se encuentran en la siguiente tabla:
--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