Docker SSH-Key 寻找简单的解决方案
Docker SSH-Key looking for a simple solution
我正在尝试将我的 ssh-keys 复制到我的 docker,这是一个非常简单的 docker,包括一些通过包管理器的 LinuxTools。一个问题是因为,我想不出一个简单的解决方案 ADD/COPY 似乎不起作用,使用 docker-volume 或 compose 似乎是过头了。请指教
FROM fedora:latest
RUN diskspacecheck=0 >> '/etc/dnf/dnf.conf'
RUN dnf -y update
RUN dnf -y install sshuttle \
&& dnf -y install git \
&& dnf -y install curl \
&& dnf -y install vim-X11 \
&& dnf -y install the_silver_searcher
RUN dnf -y clean packages
RUN adduser -m -p '' bowler
USER bowler
ADD /home/a/.ssh/id_rsa /home/bowler/.ssh/id_rsa
您不能将文件复制到位于构建目录之外的 docker 容器中。这是出于安全原因。您需要做的是首先将您的 id_rsa
文件复制到与您的 Dockerfile 相同的目录中,然后更改 ADD
以使用您刚刚制作的副本,而不是尝试从当前使用的绝对路径。
我还建议将 ADD
更改为 COPY
,因为它更容易使用并且不会出现意外行为。
所以在你的命令行:
cp ${HOME}/.ssh/id_rsa [path to dockerfile directory]
然后更新 docker 文件:
COPY id_rsa /home/bowler/.ssh/id_rsa
您可能还需要添加 RUN mkdir -p /home/bowler/.ssh
更新
根据评论,我认为值得在此处添加免责声明,如果您走这条路,则需要按照与 SSH 私钥相同的安全考虑来处理您创建的图像。
在运行时像这样注入身份验证凭据要好得多。这可以通过将环境变量设置为用于启动容器的命令的一部分来完成。或者,如果您有一个安全的秘密存储库,它可以添加到那里,然后在容器启动时由它下载(例如使用 cURL)。
将 SSH 密钥直接安装到映像的方法并非完全不合理,但请谨慎行事并记住可能有更清洁的替代方法。
我不会在构建期间在那里添加密钥,我会在你 运行 容器时挂载它,因为你可能最有可能将 Dockerfile 和其他文件存储在 VCS 中,然后每个人都可以看到你的私人钥匙!
因此在启动容器时添加它可能是 better/more 安全选项选项:)
-v ${HOME}/.ssh/id_rsa:/home/bowler/.ssh/id_rsa
我正在尝试将我的 ssh-keys 复制到我的 docker,这是一个非常简单的 docker,包括一些通过包管理器的 LinuxTools。一个问题是因为,我想不出一个简单的解决方案 ADD/COPY 似乎不起作用,使用 docker-volume 或 compose 似乎是过头了。请指教
FROM fedora:latest
RUN diskspacecheck=0 >> '/etc/dnf/dnf.conf'
RUN dnf -y update
RUN dnf -y install sshuttle \
&& dnf -y install git \
&& dnf -y install curl \
&& dnf -y install vim-X11 \
&& dnf -y install the_silver_searcher
RUN dnf -y clean packages
RUN adduser -m -p '' bowler
USER bowler
ADD /home/a/.ssh/id_rsa /home/bowler/.ssh/id_rsa
您不能将文件复制到位于构建目录之外的 docker 容器中。这是出于安全原因。您需要做的是首先将您的 id_rsa
文件复制到与您的 Dockerfile 相同的目录中,然后更改 ADD
以使用您刚刚制作的副本,而不是尝试从当前使用的绝对路径。
我还建议将 ADD
更改为 COPY
,因为它更容易使用并且不会出现意外行为。
所以在你的命令行:
cp ${HOME}/.ssh/id_rsa [path to dockerfile directory]
然后更新 docker 文件:
COPY id_rsa /home/bowler/.ssh/id_rsa
您可能还需要添加 RUN mkdir -p /home/bowler/.ssh
更新
根据评论,我认为值得在此处添加免责声明,如果您走这条路,则需要按照与 SSH 私钥相同的安全考虑来处理您创建的图像。
在运行时像这样注入身份验证凭据要好得多。这可以通过将环境变量设置为用于启动容器的命令的一部分来完成。或者,如果您有一个安全的秘密存储库,它可以添加到那里,然后在容器启动时由它下载(例如使用 cURL)。
将 SSH 密钥直接安装到映像的方法并非完全不合理,但请谨慎行事并记住可能有更清洁的替代方法。
我不会在构建期间在那里添加密钥,我会在你 运行 容器时挂载它,因为你可能最有可能将 Dockerfile 和其他文件存储在 VCS 中,然后每个人都可以看到你的私人钥匙!
因此在启动容器时添加它可能是 better/more 安全选项选项:) -v ${HOME}/.ssh/id_rsa:/home/bowler/.ssh/id_rsa