疑似 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
...

めったにやりませんが、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がリリースされましたより包括的な秘密管理この回答が書かれて以来。

関連情報