使用Docker Compose将主机的SSH密钥注入到Docker Machine中
我在Mac OS X上使用Docker机器上的Docker(使用默认的boot2docker机器),并使用docker-compose来设置我的开发环境。
假设其中一个容器被称为“ stack
”。 现在我想要做的就是打电话:
docker-composer run stack ssh user@stackoverflow.com
我的公钥(已经被添加到stackoverflow.com
,并将用于validation我)位于主机上。 我希望这个密钥对Docker机器容器可用,这样我就可以使用该容器内的密钥对自己进行身份validation。 最好不要将我的密钥物理复制到Docker Machine。
有没有办法做到这一点? 此外,如果我的密码是密码保护,有没有办法解锁一次,所以每次注射后,我不需要手动input密码?
您可以将其添加到您的docker-compose.yml(假设您的用户在容器内是root):
volumes: - ~/.ssh:/root/.ssh
您也可以检查更高级的解决scheme与SSH代理 (我没有尝试过自己)
您可以转发SSH代理:
something: container_name: something volumes: - $SSH_AUTH_SOCK:/ssh-agent # Forward local machine SSH key to docker environment: SSH_AUTH_SOCK: /ssh-agent
Docker有一个叫secret的特性,在这里可能会有所帮助。 要使用它,可以将以下代码添加到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
秘密文件不会被复制到容器中:
当您授予新创build的或正在运行的服务访问秘密时,解密的秘密将被装入容器中的内存中的文件系统
有关更多详情,请参阅: