下載外網docker鏡像的方法


來看一個dockerfile文件:

 1 # Build the manager binary
 2 FROM golang:1.16 as builder
 3 
 4 WORKDIR /workspace
 5 # Copy the Go Modules manifests
 6 COPY go.mod go.mod
 7 COPY go.sum go.sum
 8 # cache deps before building and copying source so that we don't need to re-download as much
 9 # and so that source changes don't invalidate our downloaded layer
10 RUN GOPROXY=https://goproxy.cn && go mod download
11 
12 # Copy the go source
13 COPY main.go main.go
14 COPY api/ api/
15 COPY controllers/ controllers/
16 
17 # Build
18 RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o manager main.go
19 
20 # Use distroless as minimal base image to package the manager binary
21 # Refer to https://github.com/GoogleContainerTools/distroless for more details
22 FROM gcr.io/distroless/static:nonroot
23 WORKDIR /
24 COPY --from=builder /workspace/manager .
25 USER 65532:65532
26 
27 ENTRYPOINT ["/manager"]

上述dockerfile文件中第22行有一個 gcr.io/distroless/static:nonroot 鏡像,這個鏡像在國內肯定是拉取不到的,這里給出一個解決方法:

 katacoda網站是一個國外的教學網站,這里可以利用它提供的終端去下載gcr鏡像。方法如下:

 去katacoda網站 隨便點開一個課程,進入該課程,可以看到一個終端,如圖所示:

 

 

 

之后在該終端執行以下操作:

# 登錄dockerhub,我的用戶名是yxy
docker login

# 由於kacacoda是國外網站,所以可以直接在它的終端上拉取gcr鏡像
docker pull gcr.io/distroless/static:nonroot

# 給鏡像改名,一定要是: 你的dockerhub用戶名/鏡像名:版本,否則無法推送到自己的鏡像倉庫
docker tag gcr.io/distroless/static:nonroot  yxy/distroless:nonroot

# 推送到自己的dockerhub鏡像倉庫
docker push yxy/distroless:nonroot

 

這樣就成功下載到了國外的鏡像!

然后修改上述dockerfile文件,把 gcr.io/distroless/static:nonroot 改成 yxy/distroless:nonroot 即可,這樣以后就會直接在你的dockerhub拉取yxy/distroless:nonroot了(和gcr那個是一樣的,只是名字不同),而不用拉取gcr的。

 

問題解決!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM