
Eu construo um contêiner abaixo do 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
...
Eu faço isso raramente, mas há muitos comandos antes ssh-keygen
e depois de usá-lo.
Eu sei que posso fazer isso a partir do script docker exec -it thirsty_darwin sh script.sh
e depois marcar a imagem e depois usar o encadeamento de contêineres (imagens), mas não é uma solução tão clara quanto desejo.
O pior caso é ssh-add ~/.ssh/id_rsa
quando tenho que usar a ferramenta expect. A ferramenta Expect codificou minha senha. Eu não quero fazer isso.
Responder1
Geralmente, você não deve incluir nenhum segredo nas imagens do Docker. Veresta respostapara saber mais sobre este assunto.
Docker não oferece suporte a compilações interativaspor boas razões, conforme explicado nesta edição.
Se você realmente precisa fazer isso, você pode usar docker commit
assim:
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
Agora thirsty_darwin
tem suas alterações interativas.
Atualização: Docker foi lançadogerenciamento de segredos mais abrangentedesde que esta resposta foi escrita.