疑似TTYを割り当てることで、DockerfileでDockerコンテナをインタラクティブに構築できますか?

疑似TTYを割り当てることで、DockerfileでDockerコンテナをインタラクティブに構築できますか?

次の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
...

ssh-keygen私はこれをほとんどしませんが、ofを使用する前後に多くのコマンドがあります。

スクリプトから始めて、画像docker exec -it thirsty_darwin sh script.shにタグを付けてコンテナ(イメージ)リンクを使用できることを知っていますが、必要なほど明確なソリューションではありません。

最悪のシナリオは、意図したssh-add ~/.ssh/id_rsaツールを使用する必要がある場合です。 Expectツールは私のパスワードをハードコードしました。やりたくありません。

答え1

通常、Dockerイメージには秘密を含めないでください。バラよりこの回答このトピックに関する追加情報。

Dockerはインタラクティブビルドをサポートしていません。今号に記載されている妥当な理由により

本当にこれを行う必要がある場合は、docker commit次のように使用できます。

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

これでthirsty_darwin対話が変わります。

アップデート:Dockerがリリースされました。より包括的な機密メンテナンスこの答えを書いて以来。

関連情報