Hier laufen mehrere Dinge ab. Ich mag einen Blick auf dem zweiten Fehler zuerst nehmen:
Das drone/drone
Bild ist so konfiguriert, um automatisch den /drone
Befehl ausführen (die Sie über docker inspect
und die Suche nach den Entrypoint
Schlüsseln bestimmen können). Also, wenn Sie laufen:
docker run drone/drone:0.7 help
Sie am Ende läuft, im Inneren des Behälters:
drone help
Und natürlich, wenn Sie laufen:
docker run drone/drone:0.7 /bin/bash
Sie führen, in dem Behälter :
drone /bin/bash
Daher die Fehlermeldung, die Sie sind seeing ("Kein Hilfethema für '/ bin/bash'"), weil Sie eine nicht erkannte Option an den Befehl drone
übergeben.
Der erste Fehler ist viel einfacher. Ihre Fehlermeldung lautet:
exec: \"/bin/bash\": stat /bin/bash: no such file or directory
Das scheint ziemlich klar. Es gibt keine /bin/bash
. In der Tat, wenn Sie den Inhalt des Bildes überprüfen, werden Sie sehen, dass es nur ein minimales Dateisystem gibt. Der einfachste Weg zu suchen ist durch einen Container starten, dann docker export
verwendet wird, wie folgt aus:
$ docker run drone/drone:0.7 help
[...output doesn't matter...]
$ docker export $(docker ps -lq) | tar tf -
Welche Sie zeigt:
.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/
Es gibt keine /bin/bash
, keine ssh
, keine git
, etc, so dass Sie Ich werde mit deinem derzeitigen Plan nicht viel Glück haben. Sie sollten möglicherweise in Erwägung ziehen, die Remote-Repositorys auf Ihrem Host zu klonen und sie anschließend mit einem Host-Volume-Mount (-v /host/path:/container path
) Ihrem Container auszusetzen oder ein benutzerdefiniertes Image zu erstellen, das die benötigten Tools enthält.
Die Antwort von @larks ist die richtige Antwort, aber ich wollte die Tatsache erweitern, dass Drohne Ihr Repository nicht innerhalb des 'Drohnen/Drohne'-Bildes klont. Daher hat das Hinzufügen eines SSH-Schlüssels zum "Drone/Drone" -Bild keine Auswirkungen. Stattdessen sollten Sie Drohnengeheimnisse verwenden (siehe offizielle Dokumente), um einen geheimen Schlüssel in Ihrem Repository zu registrieren, mit dem Sie dann private Git + SSH-Repositorys zur Laufzeit klonen können. Oder verwenden Sie git + https, um Abhängigkeiten zu klonen, die in der Regel von der Drohne mit keiner Konfiguration unterstützt werden. –