web-dev-qa-db-ja.com

いくつかの疑似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を使用する前と後に多くのコマンドがあります。

スクリプトからdocker exec -it thirsty_darwin sh script.shを介してそれを実行し、画像にタグを付けて、コンテナー(画像)のチェーンを使用できることを知っていますが、私が望むほど明確な解決策ではありません。

最悪の場合でも、expectツールを使用する必要がある場合はssh-add ~/.ssh/id_rsaを使用します。期待ツールが私のパスワードをハードコード化した。やりたくありません。

12
koralgooll

一般に、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は より包括的な秘密管理 をリリースしました。

17
Matt Vollrath