Je fais quelque chose d'extrêmement simple. Voici mon Dockerfile
:Fichier introuvable dans le conteneur docker
FROM alpine:latest
ADD hello.sh /bin/hello
RUN chmod +x /bin/hello
CMD /bin/hello
Puis-je construire l'image:
docker build -t hello .
Puis je lance l'image:
docker run hello
Et voici la sortie:
/bin/sh: /bin/hello: not found
Pourquoi cela se produit-il? Si je cours:
docker run hello cat /bin/hello
Je peux voir le contenu de mon script, ce qui me rend encore plus confus.
J'ai répliqué vos étapes ci-dessus en utilisant ma propre image docker, et cela a très bien fonctionné, pas de problèmes. Donc, le problème doit être avec l'image docker que vous basez sur. Le fichier existe clairement. Cela doit être un problème d'autorisations. Vous devriez vérifier pour voir quel utilisateur vous êtes par défaut, vos permissions, etc. Pouvez-vous nous indiquer le 'Dockerfile' d'origine alpine, et nous pouvons donner plus de détails? – CtheGood
Après avoir réfléchi un peu plus, j'ai une autre hypothèse. Le point d'entrée de l'image du docker peut être en train de changer votre utilisateur ou de jouer avec votre terminal bash. Essayez d'exécuter ce 'docker run -it hello bash', puis d'exécuter' hello' une fois à l'intérieur du conteneur (et publiez la sortie). Cela nous dirait si le 'entrypoint' et/ou' CMD' de l'image fait quelque chose d'étrange. La raison pour laquelle votre deuxième exemple aurait fonctionné est parce qu'il écrasait le 'CMD' du Dockerfile spécifiquement. – CtheGood
Bonjour @CtheGood, merci d'avoir examiné ce problème. Votre commentaire m'a fait réfléchir et je pense que c'est une sorte de problème d'utilisateur/groupe/permission.J'ai donc écrit le script sur un ordinateur ubuntu et j'essaie de l'exécuter dans une image alpine, et cela semble être à l'origine du problème. Une fois que je suis passé à une image ubuntu, le problème disparaît. –