Kann ich auf interaktive Weise einen Docker-Container aus einer Docker-Datei erstellen, indem ich ein Pseudo-TTY zuweise?

Kann ich auf interaktive Weise einen Docker-Container aus einer Docker-Datei erstellen, indem ich ein Pseudo-TTY zuweise?

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-keygenund nach der Verwendung von „of“.

Ich weiß, dass ich es über ein Skript machen docker exec -it thirsty_darwin sh script.shund 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_rsawenn 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 commitFolgendes 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_darwinhat Ihre interaktive Änderungen.

Update: Docker wurde veröffentlichtumfassenderes Geheimnismanagementseit diese Antwort geschrieben wurde.

verwandte Informationen