我正在嘗試使用 DOCKER_BUILDKIT 構建 Docker 映像,其中涉及從 GitLab 克隆一個私有遠程存盤庫,我的 Dockerfile 的以下行用于 git 克隆:
# Download public key for gitlab.com
RUN mkdir -p -m 0700 ~/.ssh && ssh-keyscan gitlab.com >> ~/.ssh/known_hosts
RUN --mount=type=ssh git clone [email protected]:*name_of_repo* *download_location*
但是,當我使用以下命令運行 docker build 命令時:
DOCKER_BUILDKIT=1 docker build --ssh default --tag test:local .
嘗試執行 git clone 時出現以下錯誤:
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
我已經在嘗試構建此映像的機器上成功設定了 ssh 訪問,ssh -T [email protected]并且嘗試在 Docker 構建之外克隆存盤庫都可以正常作業。
我環顧四周,但找不到任何可能導致此特定問題的資訊 - 任何指標都非常感謝。
uj5u.com熱心網友回復:
確保您有一個正在運行的 SSH 代理,并且您已向其中添加了您的私鑰。
根據您的平臺,命令可能會有所不同,但由于它被標記gitlab,我將假設 Linux 是您的平臺。
驗證您是否有一個正在運行的 SSH 代理,echo $SSH_AUTH_SOCK或者echo $SSH_AGENT_SOCK如果兩者都回顯一個空字串,那么您很可能沒有正在運行的代理。
要啟動代理,您通常可以鍵入:
eval `ssh-agent`
接下來,您可以驗證添加了哪些密鑰(如果有):
ssh-add -l
如果您需要的密鑰未列出,您可以添加它:
ssh-add /path/to/your/private-key
那么你應該很高興。
更多資訊在這里:https ://www.ssh.com/academy/ssh/agent
干杯
uj5u.com熱心網友回復:
對于測驗,請使用未加密的私有 SSH 密鑰(這意味著您不必管理ssh-agent,它只需要加密的私有密鑰密碼短語快取)
并用于ssh -Tv [email protected]檢查SSH在哪里尋找您的密鑰。
然后,在您的 Dockerfile 中,在以下行之前添加git clone:
ENV GIT_SSH_COMMAND='ssh -Tv'
當使用 SSH URL執行時,您將再次看到Docker /SSH 的位置。git clone
我在這里建議了很多,然后缺少一些安裝檔案夾。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/505087.html
標籤:GitLab Collective 码头工人 SSH GitLab dockerfile docker-buildkit
