【发布时间】:2020-04-19 19:32:02
【问题描述】:
我希望能够读取文件~/.ssh/id_rsa 的内容并将其传递给我的图像构建阶段。当我使用命令docker build --build-arg SSH_PRIVATE_KEY="$(cat ~/.ssh/id_rsa)" 然后在构建过程中尝试在容器内回显它时,我得到了空。
RUN echo "$SSH_PRIVATE_KEY" > /priv_key \
&& cat /priv_key
结果是
Step 6/14 : RUN echo "$SSH_PRIVATE_KEY" > /priv_key && cat /priv_key
---> Running in c8d6e3c88cd8
Removing intermediate container c8d6e3c88cd8
在 dockerfile 我有ARG SSH_PRIVATE_KEY。
但是当我使用像 docker build --build-arg SSH_PRIVATE_KEY="dummy text" 这样的虚拟文本时,我可以在日志中看到它。
这会导致我的私钥格式无效,因为它是空的。
RUN echo "${SSH_PRIVATE_KEY}" >> /root/.ssh/id_rsa
我做错了什么或没有做什么?谢谢
【问题讨论】:
-
这很奇怪。问题不在于 Docker,因为
dummy text有效。"$(cat ~/.ssh/id_rsa)"在 shell 中被评估并被传递给docker build,就像dummy text一样。echo "$(cat ~/.ssh/id_rsa)"有效吗? -
它适用于主机 - Mac OS。
-
它是否适用于其他文件/您使用绝对路径而不是
~? -
很奇怪。即使这样也行不通。
-
这种方法会破坏你的 ssh 密钥:你添加到 Docker 镜像中的任何东西都可以被任何拥有该镜像的人以纯文本形式轻松检索。无论您的更高级别目标是什么,我都强烈建议您寻找一种不需要从 Dockerfile 中调用 ssh 的方法。
标签: docker dockerfile containers docker-image