下載外網docker映象的方法
阿新 • • 發佈:2021-07-14
來看一個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 10RUN 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 binary21 # 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 映象,這個映象在國內肯定是拉取不到的,這裡給出一個解決方法:
katacada網站是一個國外的教學網站,這裡可以利用它提供的終端去下載gcr映象。方法如下:
去katacada網站隨便點開一個課程,進入該課程,可以看到一個終端,如圖所示:
之後在該終端執行以下操作:
# 登入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的。
問題解決!