Erreur: Impossible de Démarrer le Conteneur: stat /bin/sh: aucun fichier ou répertoire"
J'ai essayé de créer mon propre busybox image de base.
# ./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 le voir, l'image est disponible avec mon menu fixe repo.
# 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 docker run, je reçois toujours le message d'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 en mesure de comprendre pourquoi donne-t-il cette erreur? Suis-je en train de faire quelque chose de mal? Sinon, comment puis-je valider que je suis entrain de créer une image correcte qui est en état de marche?
OriginalL'auteur Pensu | 2015-04-09
Vous devez vous connecter pour publier un commentaire.
Après la création de l'image, vérifier avec:
$ docker inspecter $nom_image
et de vérifier ce que vous avez dans CMD option, l'occupation de la boîte, il devrait être:
"Cmd": [
"/bin/sh"
]
Peut-être que vous êtes overwritting CMD option dans votre ./mkimage.sh
Si Vous souhaitez exécuter le conteneur, Vous devez fournir des tâches qui seront exécutées par conteneur, à droite maintenant, docker est en cours d'exécution /bin/sh. Par exemple, si vous souhaitez exécuter le pot à l'intérieur de votre conteneur essayer java -jar yourjar.jar
C'est ce que je pense. Il n'est pas possible d'obtenir un shell interactif avec une busybox image? Quoi d'autre pourrais-je exécuter à l'intérieur d'un busybox conteneur?
Vous devriez être en mesure d'exécuter busybox avec commande simple, comme: docker run-d busybox /bin/sh-c "while true; do echo" bonjour tout le monde; sleep 1; done". Cela permettra de exécuter votre image en arrière-plan et echo bonjour tout le monde, chaque 1 seconde.
Bon, il ne de créer un conteneur, je veux dire, j'ai obtenu un numéro du conteneur, et puis il m'a donné le même message d'erreur. # docker run-d pensu disposé en carré/busybox /bin/sh-c "while true; do echo" bonjour tout le monde; sleep 1; done" d8db2c9c59e9cf36e577342c6ff746b23b7124eb28b94bc3aad4665a9f3d39a5 temps="2015-04-10T12:26:02+05:30" level="fatal" msg="Erreur de réponse de démon: Impossible de démarrer le conteneur d8db2c9c59e9cf36e577342c6ff746b23b7124eb28b94bc3aad4665a9f3d39a5: exec: \"/bin/sh\": stat /bin/sh: aucun fichier ou répertoire"
OriginalL'auteur wsl
J'ai frappé cette erreur ("stat /bin/bash": aucun fichier ou répertoire") lors de l'exécution de la commande:
La solution est de définir le type de terminal (ou shell) qui est disponible sur le conteneur. Pour ce faire, j'ai couru:
Dans la sortie de cette commande, j'ai vu:
Cela me dit qu'il y a un
/bin/sh
commande disponible, et j'ai été en mesure de se connecter avec:OriginalL'auteur duhaime
Cette erreur
se produit lors de la création d'un menu fixe de l'image de image de base par exemple.
scratch
. C'est parce que l'image qui en résulte n'est pas un shell pour exécuter l'image. Si votre utilisation:dans votre panneau de fichier, docker utilise /bin/sh pour analyser la chaîne d'entrée. et d'où l'erreur. Inspection sur l'image, vous trouverez:
Cela signifie que le point d'entrée ou CMD arguments seront analysées à l'aide de /bin/sh-c. La solution qui a fonctionné pour moi est d'analyser la commande sous la forme d'un tableau JSON de chaîne par exemple
et l'inspection de l'image:
Cela supprime la dépendance à l'égard de /bin/sh le docker application peut maintenant exécuter le fichier binaire. Exemple:
Espère que cela aide quelqu'un dans le futur.
As of Docker 1.5.0 (specifically, docker/docker#8827), FROM scratch is a no-op in the Dockerfile. Using the scratch “image” signals to the build process that you want the next command in the Dockerfile to be the first filesystem layer in your image.
Cela signifie que votre conteneur ne contient pas de /bin/sh, ou quoi que ce soit (autre que le noyau linux je suppose)Oui, vous n'avez pas de noyau attachée à l'image. L'exécution de toute commande de Linux ou docker shell dépendant de la commande échoue.
OriginalL'auteur MUNGAI NJOROGE
Mentionner explicitement la version ubuntu dans le menu fixe fichier que vous tentez d'EXÉCUTER,
Ne pas utiliser comme
FROM ubuntu:Latest
. Cela a résolu mon ci-dessus "Ne peut pas Démarrer le Conteneur: stat /bin/sh: aucun fichier ou répertoire de" problèmeOriginalL'auteur Poovalagan Jag
Vous n'avez pas le shell /bin/sh? Avez-vous essayé
docker run -it pensu/busybox /usr/bin/sh
?il me rappelle de github.com/docker/docker/issues/5135
OriginalL'auteur Miglen.com