私は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
を使用する前と後に多くのコマンドがあります。
スクリプトからdocker exec -it thirsty_darwin sh script.sh
を介してそれを実行し、画像にタグを付けて、コンテナー(画像)のチェーンを使用できることを知っていますが、私が望むほど明確な解決策ではありません。
最悪の場合でも、expectツールを使用する必要がある場合はssh-add ~/.ssh/id_rsa
を使用します。期待ツールが私のパスワードをハードコード化した。やりたくありません。
一般に、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は より包括的な秘密管理 をリリースしました。