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

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

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-keygene depois de usá-lo.

Eu sei que posso fazer isso a partir do script docker exec -it thirsty_darwin sh script.she 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_rsaquando 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 commitassim:

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_darwintem suas alterações interativas.

Atualização: Docker foi lançadogerenciamento de segredos mais abrangentedesde que esta resposta foi escrita.

informação relacionada