我从下面的 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
我很少这样做,但是在使用 of 之前和之后有很多命令。
我知道我可以从脚本开始docker exec -it thirsty_darwin sh script.sh
,然后标记图像,然后使用容器(图像)链接,但这并不是我想要的那么清晰的解决方案。
最糟糕的情况是ssh-add ~/.ssh/id_rsa
当我必须使用预期工具时。 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 已发布更全面的机密管理自从写了这个答案。