
Ich baue den Container aus dem folgenden Dockerfile:
FROM ubuntu:14.04
...
RUN apt-get update && apt-get install -y vim
#RUN ssh-keygen -f /root/.ssh/id_rsa -N strongpass123$%^
RUN ssh-keygen -f /root/.ssh/id_rsa
...
Ich mache das ziemlich selten, aber es gibt viele Befehle vor ssh-keygen
und nach der Verwendung von „of“.
Ich weiß, dass ich es über ein Skript machen docker exec -it thirsty_darwin sh script.sh
und dann das Bild taggen und anschließend die Verkettung von Containern (Bildern) verwenden kann, aber das ist nicht die klare Lösung, die ich möchte.
Noch schlimmer ist es, ssh-add ~/.ssh/id_rsa
wenn ich das Expect-Tool verwenden muss. Das Expect-Tool hat mein Passwort fest codiert. Ich möchte das nicht tun.
Antwort1
Im Allgemeinen sollten Sie keine Geheimnisse in Docker-Images einschließen. Siehediese Antwortfür weitere Informationen zu diesem Thema.
Docker unterstützt keine interaktiven Buildsaus guten Gründen, wie in dieser Ausgabe erläutert.
Wenn Sie dies wirklich tun müssen, können Sie docker commit
Folgendes verwenden:
docker build -t thirsty_darwin_base /path/to/Dockerfile
docker run -it --name=thirsty_darwin_changes thirsty_darwin_base /bin/bash
# do interactive stuff in the shell, then exit
docker commit thirsty_darwin_changes thirsty_darwin
Jetzt thirsty_darwin
hat Ihre interaktive Änderungen.
Update: Docker wurde veröffentlichtumfassenderes Geheimnismanagementseit diese Antwort geschrieben wurde.