我正在嘗試制作一個腳本,該腳本將構建一堆docker鏡像,并將它們推送到一個私人倉庫。
從檔案來看,docker build命令似乎可以接受git urls:確實非常好。
所有的倉庫都是私有的,公司里的每個人都設定了ssh密鑰,可以通過ssh訪問git倉庫,比如git clone [email protected]:/my-org/my-repo.git
我以為提供這樣的網址也可以,因為這似乎是一個非常普遍的使用情況。結果發現不是這樣的。
我在谷歌上搜索解決方案,發現了一個關于url格式化的git ticket,所以我嘗試了以下所有方法:
ssh://[email protected]:/my-org/my-repo.gitssh://[email protected]/my-org/my-repo.gitssh://[email protected]:my-org/my-repo.git[email protected]:/my-org/my-repo.git[email protected]/my-org/my-repo.git[email protected]:my-org/my-repo.git
這個串列中的最后一個是最有希望的,因為我得到了以下的輸出:
在有人問起之前:是的,這個 repo 存在,我可以克隆它:) 我以為這個程序的 "克隆 "部分會在 "本地 "使用我自己的ssh密鑰完成,然后再將背景關系發送給docker進行構建。顯然,情況并非如此。 這是否是一項支持的功能?
這是否是一個被支持的功能,如果是的話,如何使其發揮作用?
編輯:我意識到我忘了提供一些背景。
我在macOS big sur上運行Docker Desktop uj5u.com熱心網友回復: Docker for Mac不是在你的機器上原生運行,而是在一個虛擬機中。看起來 我的假設是基于這個日志條目。
所以為了通過ssh訪問你的私有倉庫,你需要在Docker的VirtualMachine中也存盤ssh密鑰對。
EDIT為了連接到VirtualMachine,打開終端并運行 uj5u.com熱心網友回復: 在我的例子中,我在容器內生成了ssh-keygen,并在我的賬戶中復制粘貼。然后,執行到容器中,并測驗了git clone my-ssh-url,它成功了。
標籤:$ dock-in-service.com
$ docker build -t registry.example.com:5000/my-repo:update --ssh=default [email protected]:my-org/my-repo.git
[ ] 構建 0.9s (1/1) FINISHED
=> ERROR [internal] load git source [email protected]:my-org/my-repo.git 0.9s
------
> [內部] 加載git source [email protected]:my-org/my-repo.git:
#1 0.551 警告。永久添加IP地址'140.82.121.3'的RSA主機密鑰到已知主機串列。
#1 0.896 [email protected]。拒絕許可(publickey)。
#1 0.898 fatal: 無法從遠程存盤庫讀取。
#1 0.898
#1 0.898 請確認你有正確的訪問權限
#1 0.898 并且版本庫存在。
------
未能用前端的dockerfile.v0解決:未能讀取dockerfile:未能加載快取密鑰:未能獲取遠程[email protected]:my-org/my-repo.git:退出狀態128
Docker Desktop是在macOS big sur上運行。
Docker 版本 20.10.8, build 3967b7d客戶端。
Context: default
Debug Mode: false
插件。
buildx: Build with BuildKit (Docker Inc., v0.6.1-docker)
compose: Docker Compose (Docker Inc., v2.0.0-rc.3)
掃描。Docker Scan (Docker Inc., v0.8.0)
服務器。
容器。9
運行中: 8
已暫停。0
已停止: 1
影像。28
服務器版本: 20.10.8
存盤驅動: overlay2
備份檔案系統:extfs
支持d_type: true
本地疊加差異:true
userxattr: false
日志驅動:json-file
Cgroup 驅動程式:cgroupfs
Cgroup 版本: 1
插件。
卷:本地
網路:bridge host ipvlan macvlan null overlay
日志: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm:不活動
Runtimes: io.containerd.runtime.v1.linux runc io.containerd.runc.v2
默認運行時:runc
啟動二進制:docker-init
containerd版本: e25210fe30a0a703442421b0f60afac609f950a3
runc版本: v1.0.1-0-g4144b63
init版本: de40ad0
安全選項。
seccomp
組態檔: default
內核版本: 5.10.47-linuxkit
作業系統。Docker桌面
OSType: linux
架構: x86_64
CPUs: 4
總記憶體。3.842GiB
名稱:docker-desktop
id: 77lc:z2ay:k6aa:oxay:3jyq:rssl:rcjz:gosk:futg:dapy:wikk:bb7a
Docker根目錄: /var/lib/docker
除錯模式: true
檔案描述符。105
猩猩程式。93
系統時間: 2021-09-16T08:47:27.924652162Z
事件監聽器。4
HTTP代理:http.docker.internal:3128
HTTPS代理:http.docker.internal:3128
注冊表:https://index.docker.io/v1/
標簽。
實驗性:false
不安全的注冊表。
<REDACTED>
啟用的實時恢復:false
git clone命令是在VirtualMachine里面執行的#1 0.551 警告。永久添加 IP 地址'140.82.121.3'的 RSA 主機密鑰到已知主機串列中。docker run -it --privileged --pid=host justincormack/nsenter1
