
以下の 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
...
めったにやりませんが、of を使用する前ssh-keygen
と後には多くのコマンドがあります。
スクリプトから実行してイメージにタグを付け、コンテナー (イメージ) のチェーンを使用できることはわかっていますdocker exec -it thirsty_darwin sh script.sh
が、これは私が望むほど明確な解決策ではありません。
ssh-add ~/.ssh/id_rsa
さらに最悪なのは、expect ツールを使用しなければならない場合です。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がリリースされましたより包括的な秘密管理この回答が書かれて以来。