wake-up-neo.net

Fehler: Container kann nicht gestartet werden: stat/bin/sh: keine solche Datei oder Verzeichnis "

Ich habe versucht, ein eigenes Basisabbild für "busybox" zu erstellen.

# ./mkimage.sh -t pensu/busybox busybox-static
+ mkdir -p /var/tmp/docker-mkimage.US3tHy0uBQ/rootfs
+ tar --numeric-owner -caf /var/tmp/docker-mkimage.US3tHy0uBQ/rootfs.tar.xz -C /var/tmp/docker-mkimage.US3tHy0uBQ/rootfs '--transform=s,^./,,' .
+ cat > '/var/tmp/docker-mkimage.US3tHy0uBQ/Dockerfile'
+ rm -rf /var/tmp/docker-mkimage.US3tHy0uBQ/rootfs
+ docker build -t pensu/busybox /var/tmp/docker-mkimage.US3tHy0uBQ
Sending build context to Docker daemon 863.2 kB
Sending build context to Docker daemon 
Step 0 : FROM scratch
 ---> 
Step 1 : ADD rootfs.tar.xz /
 ---> 8eac78bfc9d6
Removing intermediate container ad9bbb8f7536
Successfully built 8eac78bfc9d6
+ rm -rf /var/tmp/docker-mkimage.US3tHy0uBQ

Ich kann sehen, dass das Bild mit meinem Docker-Repo verfügbar ist.

# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
pensu/busybox       latest              8eac78bfc9d6        7 seconds ago       2.476 MB

Aber wenn ich versuche, das Andocken auszuführen, bekomme ich immer den Fehler:

# docker run -it pensu/busybox /bin/sh
exec: "/bin/sh": stat /bin/sh: no such file or directorytime="2015-04-09T16:03:45+05:30" level="fatal" msg="Error response from daemon: Cannot start container 8fe73b7832193c847d7975175a4be86d1f0b550b6a00b812bd4cdd18fe752468: exec: \"/bin/sh\": stat /bin/sh: no such file or directory" 

Ich kann nicht verstehen, warum es diesen Fehler gibt? Mache ich etwas falsch? Wie kann ich sonst bestätigen, dass ich ein korrektes Bild erstellt habe, das sich in einwandfreiem Zustand befindet?

8
Pensu

Nachdem Sie ein Bild erstellt haben, überprüfen Sie es mit:

$ docker inspiziert $ image_name 

und überprüfen Sie, was Sie in der CMD-Option haben, für die Beschäftigt-Box sollte es sein: "Cmd": [ "/bin/sh"[.____.( überschreiben die CMD-Option in Ihrer ./mkimage.sh

11
wsl

Ich habe diesen Fehler ("stat/bin/bash: keine solche Datei oder ein solches Verzeichnis") beim Ausführen des Befehls festgestellt:

docker exec -it 80372bc2c41e /bin/bash

Die Lösung bestand darin, die Art des Terminals (oder der Shell) zu ermitteln, die auf dem Container verfügbar ist. Dafür lief ich:

docker inspect 80372bc2c41e

In der Ausgabe dieses Befehls sah ich:

"Cmd": [
    "/bin/sh",
    "-c",
    "gunicorn -b 0.0.0.0:7082 server.app:app"
],

Dies sagt mir, dass es einen /bin/sh-Befehl gibt, mit dem ich mich verbinden konnte:

docker exec -it 80372bc2c41e /bin/sh
7
duhaime

Dieser Fehler 

docker: Fehlerantwort vom Daemon: OCI-Laufzeiterstellung fehlgeschlagen: container_linux.go: 348: Beim Starten des Containerprozesses wurde "exec: \"/bin/sh\": stat/bin/sh: Keine solche Datei oder Verzeichnis ": unbekannt.

tritt beim Erstellen eines Docker-Images aus dem Basis-Image auf, z. scratch. Dies liegt daran, dass das resultierende Image keine Shell zum Ausführen des Images besitzt. Wenn Ihre Verwendung:

ENV EXECUTABLE hello
cmd [$EXECUTABLE]

in Ihrer Docker-Datei analysiert das Docker/bin/sh die Eingabezeichenfolge. und daher der Fehler. Wenn Sie das Bild überprüfen, werden Sie Folgendes finden:

$docker inspect <image-name>
"Entrypoint": [
                "/bin/sh",
                "-c",
                "[$HM_APP]"
            ]

Das bedeutet, dass die ENTRYPOINT- oder CMD-Argumente mit/bin/sh -c analysiert werden. Die Lösung, die für mich funktioniert hat, besteht darin, den Befehl als JSON-Array von Zeichenfolge zu analysieren, z.

cmd ["hello"]

und inspiziere das Bild erneut: 

"Entrypoint": [
                "hello"
            ]

Dadurch wird die Abhängigkeit von/bin/sh aufgehoben. Die Docker-App kann nun die Binärdatei ausführen. Beispiel:

FROM scratch

# Environmental variables

# Copy files
ADD . /
# Home dir
WORKDIR /bin

EXPOSE 8083
ENTRYPOINT ["hospitalms"]

Hoffe, das hilft jemand in Zukunft.

4
MUNGAI NJOROGE

Erwähnen Sie explizit die Ubuntu-Version in der Docker-Datei, die Sie ausführen möchten.

FROM ubuntu:14.04

Verwenden Sie nicht wie FROM ubuntu:Latest. Dies behebte mein oben erwähntes Problem "Container kann nicht gestartet werden: stat/bin/sh: keine solche Datei oder ein solches Verzeichnis"

1
Poovalagan Jag

Sie haben keine Shell bei/bin/sh? Haben Sie docker run -it pensu/busybox /usr/bin/sh ausprobiert?

0
Miglen.com