Posso construir um contêiner Docker a partir do Dockerfile de forma interativa com a alocação de algum pseudo TTY?

11

Eu construo container a partir 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 muito raramente, mas há muitos comandos antes de usar ssh-keygen e depois dele.

Eu sei que posso fazer isso do script através de docker exec -it thirsty_darwin sh script.sh e, em seguida, marcar a imagem e, em seguida, usar o encadeamento de contêineres (imagens), mas não é a solução mais clara que eu quero.

Até mesmo o pior caso é com ssh-add ~/.ssh/id_rsa quando eu tenho que usar a ferramenta esperar. A ferramenta Esperar codificou minha senha. Eu não quero fazer isso.

    
por koralgooll 19.02.2016 / 11:52

1 resposta

14

Geralmente, você não deve incluir nenhum segredo nas imagens do Docker. Veja esta resposta para mais informações sobre este assunto.

O Docker não suporta criações interativas por boas razões, conforme explicado nesta edição .

Se você realmente precisa fazer isso, use docker commit da seguinte forma:

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: o Docker lançou o gerenciamento mais abrangente de segredos desde que esta resposta foi escrita.

    
por 19.02.2016 / 12:13