Il se passe plusieurs choses ici. Je voudrais jeter un oeil à la deuxième erreur d'abord:
L'image drone/drone
est configuré pour exécuter automatiquement la commande /drone
(que vous pouvez déterminer en utilisant docker inspect
et la recherche de la clé Entrypoint
). Donc, si vous exécutez:
docker run drone/drone:0.7 help
Vous finissez en cours d'exécution, à l'intérieur du conteneur:
drone help
Et bien sûr, si vous exécutez:
docker run drone/drone:0.7 /bin/bash
Vous utilisez, dans le conteneur :
drone /bin/bash
D'où le message d'erreur que vous êtes seeing ("Aucune rubrique d'aide pour '/ bin/bash'"), car vous passez une option non reconnue à la commande drone
.
La première erreur est beaucoup plus simple. Votre message d'erreur est:
exec: \"/bin/bash\": stat /bin/bash: no such file or directory
Cela semble assez clair. Il n'y a pas de /bin/bash
. En fait, si vous inspectez le contenu de l'image, vous verrez qu'il n'y a qu'un système de fichiers minimal. La meilleure façon de regarder est en démarrant un récipient, puis en utilisant docker export
, comme ceci:
$ docker run drone/drone:0.7 help
[...output doesn't matter...]
$ docker export $(docker ps -lq) | tar tf -
qui vous montre:
.dockerenv
dev/
dev/console
dev/pts/
dev/shm/
drone
etc/
etc/hostname
etc/hosts
etc/mtab
etc/resolv.conf
etc/ssl/
etc/ssl/certs/
etc/ssl/certs/ca-certificates.crt
proc/
sys/
Il n'y a pas /bin/bash
, pas ssh
, pas git
, etc, de sorte que vous Je ne vais pas avoir beaucoup de chance avec votre plan actuel. Vous pouvez envisager de cloner les référentiels distants sur votre hôte, puis de les exposer à votre conteneur à l'aide d'un montage de volume hôte (-v /host/path:/container path
) ou de créer une image personnalisée contenant l'outil dont vous avez besoin.
La réponse de @larsks est la bonne réponse, cependant, je voulais développer le fait que drone ne clone pas votre dépôt dans l'image 'drone/drone'. Par conséquent, l'ajout d'une clé SSH à l'image 'drone/drone' n'aura aucun impact. Au lieu de cela, vous devez utiliser les secrets de drones (voir les documents officiels) pour enregistrer une clé secrète avec votre référentiel que vous pouvez ensuite utiliser pour cloner des dépôts git + ssh privés à l'exécution. Ou utilisez git + https pour cloner les dépendances que le drone supporte généralement avec une configuration nulle. –