docker a commencé à lancer cette erreur:
standard_init_linux.go: 178: le processus utilisateur exec a provoqué une "erreur de format exec"
chaque fois que j'exécute un conteneur de menu fixe spécifique avec CMD ou ENTRYPOINT, sans égard aux modifications apportées au fichier autres que la suppression de CMD ou ENTRYPOINT. voici le fichier docker avec lequel j'ai travaillé et qui a fonctionné parfaitement il y a environ une heure:
FROM buildpack-deps:jessie
ENV PATH /usr/local/bin:$PATH
ENV LANG C.UTF-8
RUN apt-get update && apt-get install -y --no-install-recommends \
tcl \
tk \
&& rm -rf /var/lib/apt/lists/*
ENV GPG_KEY 0D96DF4D4110E5C43FBFB17F2D347EA6AA65421D
ENV PYTHON_VERSION 3.6.0
ENV PYTHON_PIP_VERSION 9.0.1
RUN set -ex \
&& buildDeps=' \
tcl-dev \
tk-dev \
' \
&& apt-get update && apt-get install -y $buildDeps --no-install-recommends && rm -rf /var/lib/apt/lists/* \
\
&& wget -O python.tar.xz "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz" \
&& wget -O python.tar.xz.asc "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc" \
&& export GNUPGHOME="$(mktemp -d)" \
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$GPG_KEY" \
&& gpg --batch --verify python.tar.xz.asc python.tar.xz \
&& rm -r "$GNUPGHOME" python.tar.xz.asc \
&& mkdir -p /usr/src/python \
&& tar -xJC /usr/src/python --strip-components=1 -f python.tar.xz \
&& rm python.tar.xz \
\
&& cd /usr/src/python \
&& ./configure \
--enable-loadable-sqlite-extensions \
--enable-shared \
&& make -j$(nproc) \
&& make install \
&& ldconfig \
\
&& if [ ! -e /usr/local/bin/pip3 ]; then : \
&& wget -O /tmp/get-pip.py 'https://bootstrap.pypa.io/get-pip.py' \
&& python3 /tmp/get-pip.py "pip==$PYTHON_PIP_VERSION" \
&& rm /tmp/get-pip.py \
; fi \
&& pip3 install --no-cache-dir --upgrade --force-reinstall "pip==$PYTHON_PIP_VERSION" \
&& [ "$(pip list |tac|tac| awk -F '[ ()]+' '$1 == "pip" { print $2; exit }')" = "$PYTHON_PIP_VERSION" ] \
\
&& find /usr/local -depth \
\( \
\( -type d -a -name test -o -name tests \) \
-o \
\( -type f -a -name '*.pyc' -o -name '*.pyo' \) \
\) -exec rm -rf '{}' + \
&& apt-get purge -y --auto-remove $buildDeps \
&& rm -rf /usr/src/python ~/.cache
RUN cd /usr/local/bin \
&& { [ -e easy_install ] || ln -s easy_install-* easy_install; } \
&& ln -s idle3 idle \
&& ln -s pydoc3 pydoc \
&& ln -s python3 python \
&& ln -s python3-config python-config
RUN pip install uwsgi
RUN mkdir /config
RUN mkdir /logs
ENV HOME /var/www
WORKDIR /config
ADD conf/requirements.txt /config
RUN pip install -r /config/requirements.txt
ADD conf/wsgi.py /config
ADD conf/wsgi.ini /config
ADD conf/__init__.py /config
ADD start.sh /bin/start.sh
RUN chmod +x /bin/start.sh
EXPOSE 8000
ENTRYPOINT ["start.sh", "uwsgi", "--ini", "wsgi.ini"]
J'ai oublié de mettre
#!/bin/bash
en haut du fichier sh, le problème est résolu.
Une autre raison possible pourrait être si le fichier est enregistré avec les fins de ligne Windows (CRLF). Enregistrez-le avec les fins de ligne Unix (LF) et le fichier sera trouvé.
J'ai rencontré le même problème dans RHEL 7.3, docker 17.05-ce lors de l'exécution d'une image chargée hors connexion. Il est apparu que le pilote de stockage par défaut de RHEL/CentOS est passé de device-mapper à overlay. Rétablir le pilote sur devicemapper a résolu le problème.
dockerd --storage-driver=devicemapper
ou
/etc/docker/daemon.json
{
"storage-driver": "devicemapper"
}
Ajouter ce code
#!/usr/bin/env bash
en haut de votre fichier de script.
Une autre possibilité est que #!/Bin/bash ne soit pas dans la toute première ligne. Il doit y avoir vraiment rien avant elle (pas de lignes vides, rien).
Extension à la réponse acceptée:
Pour une image Alpine (sans bash):
#!/bin/ash
en haut du fichier sh, résout le problème.
Pas une réponse directe à la question posée. Bien que j'aie eu l'erreur en appelant "docker-compos up" pour mettre en place mon application nodejs. A réalisé que dans mon "Dockerfile" j'avais CMD ["./server.js"]
.
Pour résoudre ce problème, je l'ai remplacé par CMD ["npm","start"]
et le problème a été résolu. Espérons que si quelqu'un atterrit ici pour cette exception trouvera cela utile.