簡體   English   中英

如何通過Docker機密共享SSH密鑰以訪問私有Github存儲庫?

[英]How to share SSH key through Docker secrets to access private Github repos?

我使用的是從建議這個職位實行多克的秘密 ,這樣我可以使用本地SSH密鑰為我的容器驗證用戶訪問Github上。 我在MacOS上,沒有使用Docker swarm。 這是我的設置:

docker-compose.yml

version: '3.1'

services:
  [servicename]:
    secrets:
     - ssh_private_key

[...]

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

Docker文件

FROM python:3.7 as intermediate

RUN mkdir /root/.ssh/ 
RUN ln -s /run/secrets/ssh_private_key /root/.ssh/id_rsa
RUN touch /root/.ssh/known_hosts
RUN ssh-keyscan github.com >> /root/.ssh/known_hosts
COPY requirements_private_repos.txt ./

RUN pip install --no-cache-dir -r requirements_private_repos.txt

當我嘗試運行docker-compose build並使用SSH密鑰從私有遠程存儲庫中提取時,出現以下錯誤:

Permission denied (publickey).
fatal: Could not read from remote repository.

我能夠遠程訪問docker映像,並看到正在/run/secrets/ssh_private_key創建並填充了/run/secrets/ssh_private_key

在Dockerfile中使用鏈接時,為什么鏈接不起作用? 如果docker secrets不是正確的方法,是否有更好的方法將Mac OS上的SSH密鑰共享給Docker?

您不能在構建短語上使用運行時機密。 您可以使用多階段構建將機密復制到映像,以便在下一階段將其丟棄,也可以使用Docker 18.09中引入的新的構建時機密。

對於多階段方法,您可以執行以下操作:

FROM python:3.7 as intermediate

COPY id_rsa /root/.ssh/id_rsa # your private key must be on the build context
RUN touch /root/.ssh/known_hosts
RUN ssh-keyscan github.com >> /root/.ssh/known_hosts
COPY requirements_private_repos.txt ./

RUN pip install --no-cache-dir -r requirements_private_repos.txt

FROM python:3.7

COPY --from=intermediate XXXX YYYY # copy your modules, this image won't have the ssh private key

對於新方法,您可以執行以下操作,自己還沒有嘗試過此方法(需要在主機上運行ssh-agent):

FROM python:3.7 as intermediate

RUN touch /root/.ssh/known_hosts
RUN ssh-keyscan github.com >> /root/.ssh/known_hosts
COPY requirements_private_repos.txt ./

RUN --mount=type=ssh pip install --no-cache-dir -r requirements_private_repos.txt

然后使用以下方法構建圖像:

docker build --ssh default . -t myimage

查看文檔以獲取有關新方法的更多信息:

https://docs.docker.com/develop/develop-images/build_enhancements/#new-docker-build-secret-information

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM