使用 Docker Compose 将主机的 SSH 密钥注入 Docker Machine

新手上路,请多包涵

我在 Mac OS X 上使用 Docker 和 Docker 机器(使用默认的 boot2docker 机器),我使用 docker-compose 来设置我的开发环境。

假设其中一个容器名为“ stack ”。现在我想做的是调用:

 docker-composer run stack ssh user@stackoverflow.com

我的公钥(已添加到 stackoverflow.com 并将用于对我进行身份验证)位于主机上。我希望 Docker Machine 容器可以使用此密钥,以便我能够使用容器内的该密钥对 stackoverflow 进行身份验证。最好不要将我的密钥物理复制到 Docker Machine。

有没有办法做到这一点?另外,如果我的钥匙受密码保护,有没有办法解锁一次,这样每次注射后我就不必手动输入密码了?

原文由 Ruslan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 618
2 个回答

警告:此功能在 Docker Compose 中的支持似乎有限,并且更多地是为 Docker Swarm 设计的。

(我还没有检查确定,但是)我目前的印象是:

  • 在 Docker Compose 中,秘密只是绑定挂载卷,因此与卷相比没有额外的安全性
  • 使用 Linux 主机更改机密权限的能力可能会受到限制

有关详细信息,请参阅答案评论。


Docker 有一个名为 secrets 的功能,在这里可以提供帮助。要使用它,可以将以下代码添加到 docker-compose.yml

 ---
version: '3.1' # Note the minimum file version for this feature to work
services:
  stack:
    ...
    secrets:
      - host_ssh_key

secrets:
  host_ssh_key:
    file: ~/.ssh/id_rsa

然后可以在 Dockerfile 中访问新的秘密文件,如下所示:

 RUN mkdir ~/.ssh && ln -s /run/secrets/host_ssh_key ~/.ssh/id_rsa

机密文件不会被复制到容器中:

当您授予新创建或正在运行的服务对密钥的访问权限时,解密的密钥将挂载到内存文件系统中的容器中

更多详情请参考:

原文由 Anton Styagun 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题