Docker hat diesen Fehler ausgelöst:
standard_init_linux.go: 178: Der Exec-Benutzerprozess hat einen "Exec-Formatfehler" verursacht.
Immer wenn ich einen bestimmten Docker-Container mit CMD oder ENTRYPOINT ausführe, ohne Rücksicht auf Änderungen an der Datei, außer CMD oder ENTRYPOINT zu entfernen. Hier ist die Docker-Datei, mit der ich gearbeitet habe und die bis vor ungefähr einer Stunde perfekt funktioniert hat:
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"]
#
am Anfang meines Einstiegspunktes irgendwie entfernt . Was für eine Zeitverschwendung.Fügen Sie diesen Code hinzu
#!/usr/bin/env bash
oben in Ihrer Scirpt-Datei.
quelle
Dies kann passieren, wenn Sie versuchen, ein von x86 erstelltes Image auf einem arm64 / aarch64-Computer auszuführen.
Sie müssen das Image mithilfe der entsprechenden Architektur neu erstellen
quelle
Ein weiterer möglicher Grund hierfür könnte sein, dass die Datei mit Windows-Zeilenenden (CRLF) gespeichert wird. Speichern Sie es mit Unix-Zeilenenden (LF) und die Datei wird gefunden.
quelle
Ich habe das gleiche Problem in RHEL 7.3, Docker 17.05-ce, beim Ausführen eines offline geladenen Images festgestellt. Es schien, dass der Standardspeichertreiber von RHEL / CentOS von Device-Mapper auf Overlay geändert wurde . Durch Zurücksetzen des Treibers auf Devicemapper wurde das Problem behoben.
dockerd --storage-driver=devicemapper
oder
/etc/docker/daemon.json { "storage-driver": "devicemapper" }
quelle
Erweiterung auf die akzeptierte Antwort:
Für ein alpines (ohne Bash) Bild:
#!/bin/ash
Löst das Problem oben in der sh-Datei.
quelle
Eine weitere Möglichkeit ist, dass #! / Bin / bash nicht in der ersten Zeile steht. Es darf wirklich nichts davor sein (keine leeren Zeilen, nichts).
quelle
Keine direkte Antwort auf die gestellte Frage. Obwohl ich den Fehler beim Aufrufen von "docker-compose up" erhalten habe, um meine nodejs-Anwendung aufzurufen. Erkannte, dass ich in meinem "Dockerfile" hatte
CMD ["./server.js"]
.Um
CMD ["npm","start"]
das Problem zu beheben, habe ich es durch ersetzt und das Problem wurde behoben. Ich hoffe, wenn jemand wegen dieser Ausnahme hier landet, kann dies hilfreich sein.quelle
In meinem Fall habe ich meine ECS-Instanz "entleert" und sie wieder "aktiviert", und danach ist der Fehler verschwunden.
quelle