web-dev-qa-db-fra.com

Erreur: impossible de démarrer le conteneur: stat/bin/sh: aucun fichier ni répertoire de ce type "

J'ai essayé de créer ma propre image de base busybox.

# ./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

Je peux voir que l'image est disponible avec mon dépôt Docker.

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

Mais quand j'essaie de faire tourner Docker, j'obtiens toujours l'erreur:

# 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" 

Je ne suis pas capable de comprendre pourquoi donne-t-il cette erreur? Est-ce que je fais quelque chose de mal? Sinon, comment puis-je valider la création d'une image correcte en état de marche?

8
Pensu

Après avoir créé une image, vérifiez-la avec:

$ docker inspect $ nom_image 

et vérifiez ce que vous avez dans l'option CMD, pour les boîtes occupées, il devrait s'agir de: "Cmd": [ "/bin/sh"[.____._rev écrasent l'option CMD dans votre ./mkimage.sh

11
wsl

J'ai frappé cette erreur ("stat/bin/bash: aucun fichier ni répertoire") lors de l'exécution de la commande:

docker exec -it 80372bc2c41e /bin/bash

La solution consistait à identifier le type de terminal (ou Shell) disponible sur le conteneur. Pour ce faire, j'ai couru:

docker inspect 80372bc2c41e

Dans la sortie de cette commande, j'ai vu:

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

Cela me dit qu'il existe une commande /bin/sh disponible et que j'ai pu me connecter avec:

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

Cette erreur 

docker: réponse d'erreur du démon: la création du moteur d'exécution OCI a échoué: container_linux.go: 348: le démarrage du processus de conteneur a provoqué "exec: \"/bin/sh\": stat/bin/sh: pas de fichier ou répertoire ": inconnu.

se produit lors de la création d'une image de menu fixe à partir d'une image de base, par exemple. scratch. Cela est dû au fait que l'image résultante n'a pas de shell pour exécuter l'image. Si votre utilisation:

ENV EXECUTABLE hello
cmd [$EXECUTABLE]

dans votre fichier docker, docker utilise/bin/sh pour analyser la chaîne d'entrée. et par conséquent l'erreur. En inspectant l'image, vous trouverez:

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

Cela signifie que les arguments ENTRYPOINT ou CMD seront analysés à l'aide de/bin/sh -c. La solution qui a fonctionné pour moi consiste à analyser la commande sous la forme d'un tableau JSON de chaîne, par exemple.

cmd ["hello"]

et inspecter à nouveau l'image: 

"Entrypoint": [
                "hello"
            ]

Cela supprime la dépendance à l'égard de/bin/sh, l'application de menu fixe peut maintenant exécuter le fichier binaire. Exemple:

FROM scratch

# Environmental variables

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

EXPOSE 8083
ENTRYPOINT ["hospitalms"]

J'espère que cela aidera quelqu'un à l'avenir.

4
MUNGAI NJOROGE

Mentionner explicitement la version d'ubuntu dans le fichier de menu fixe que vous essayez d'exécuter,

FROM ubuntu:14.04

Ne pas utiliser comme FROM ubuntu:Latest. Ce problème résolu ci-dessus "Impossible de démarrer le conteneur: stat/bin/sh: aucun fichier ou répertoire de ce type"

1
Poovalagan Jag

Vous n'avez pas de shell dans/bin/sh? Avez-vous essayé docker run -it pensu/busybox /usr/bin/sh?

0
Miglen.com