我可以通过分配一些伪 TTY 以交互方式从 Dockerfile 构建 Docker 容器吗?

我可以通过分配一些伪 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我很少这样做,但是在使用 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 已发布更全面的机密管理自从写了这个答案。

相关内容