Beim Erstellen eines Docker-Images über dockerfile muss ich einen GitHub-Repo klonen. Ich habe meine öffentlichen SSH-Schlüssel meinem Git-Hub-Account hinzugefügt und kann den Repo von meinem Docker-Host klonen. Während ich sehe, dass ich den SSH-Schlüssel des Docker-Hosts verwenden kann, indem ich die $SSH_AUTH_SOCK
env-Variable zum Zeitpunkt des Andockmanövers abbilde, wie docker run --rm -it --name container_name \
-v $(dirname $SSH_AUTH_SOCK):$(dirname $SSH_AUTH_SOCK) \
-e SSH_AUTH_SOCK=$SSH_AUTH_SOCK my_image
.
Wie kann ich das gleiche bei der Docker-Erstellung tun?
Leider können Sie Ihr ssh-Socket nicht an den Erstellungscontainer weiterleiten, da Mounts für die Erstellung von Zeitdatenträgern derzeit nicht in Docker unterstützt werden.
Dies ist seit einiger Zeit ein Diskussionsthema. Sehen Sie sich die folgenden Ausgaben auf GitHub als Referenz an:
Wie Sie sehen können, wurde diese Funktion für verschiedene Anwendungsfälle mehrfach angefordert. Bislang zögerten die Betreuer, dieses Problem anzugehen, da sie der Ansicht sind, dass das Volumen während des Builds steigen würde, was die Portabilität beeinträchtigen würde:
Das Ergebnis eines Builds sollte unabhängig vom zugrunde liegenden Host sein
Wie in dieser Diskussion beschrieben.
Lösen. Erstellen Sie ein Bash-Skript (~ / bin / docker-compose oder like):
%Vor%Und in Dockerfile mit socat:
%Vor% Führen Sie dann docker-compose build
Tags und Links docker docker-compose dockerfile ssh-keys docker-image