简单介绍下什么时候会需要 docker push:
-
当你在某个容器中,做了下修改后,想要"保存"住当前修改,可以用 docker commit 命令,然后再docker push
runoob@runoob:~$ docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2 sha256:70bf1840fd7c0d2d8ef0a42a817eb29f854c1af8f7c59fc03ac7bdee9545aff8 runoob@runoob:~$ 各个参数说明: -m: 提交的描述信息 -a: 指定镜像作者 e218edb10161:容器 ID runoob/ubuntu:v2: 指定要创建的目标镜像名
-
服务器(可以访问公网)因为墙的原因下载不了(gcr.io/distroless/static:nonroot), 这时可以曲线救国,用 docker hub 中转一下。
a. 先找一个可以访问google的机器,执行docker pull gcr.io/distroless/static:nonroot docker tag gcr.io/distroless/static:nonroot aaaaaa/static:nonroot docker push aaaaaa/static:nonroot 其中 aaaaaa 是我在 https://hub.docker.com/ 上的用户 ID
b. 在不能翻墙的服务器上再执行
docker pull aaaaaa/static:nonroot docker tag aaaaaa/static:nonroot gcr.io/distroless/static:nonroot
这就完美解决该问题
扩展一下:docker pull 的原理,如果本地的有要请求的 image 且sha256 和服务器 docker hub 上的一致,则不重新下载;否则重新下载。这里想强调的是如果你的 docker image 有 gcr.io/kubebuilder/kube-rbac-proxy:v0.5.0,但是如果在命令行执行 docker pull gcr.io/kubebuilder/kube-rbac-proxy:v0.5.0 依然会报错,因为网络访问不了 google,所以就不能完成本地 imge和docker hub上的比较,所以就报错了。你可能会有有疑问那 docker imges 列出的 gcr.io/kubebuilder/kube-rbac-proxy:v0.5.0 是从哪里来的,它有可能是你的 docker tag 得来的,但是这个 docker tag 得来的 gcr.io/kubebuilder/kube-rbac-proxy:v0.5.0 是可以用在 Dockerfile 中的 FROM 里的但 docker pull xxx 是失败的,比如 gcr.io/distroless/static:nonroot,这有点意思哈
该文背景是在用 Operator SDK创建Operator 时的第3步构建镜像时,走到 Dockerfile 第10步 FROM gcr.io/distroless/static:nonroot 报 Get https://gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
[root@jdddba memcached-operator]# pwd
/root/memcached-operator
[root@jdddba memcached-operator]#
[root@jdddba memcached-operator]# cat Dockerfile ----在 RUN 中指定环境变量
# Build the manager binary
FROM golang:1.13 as builder
WORKDIR /workspace
# Copy the Go Modules manifests
COPY go.mod go.mod
COPY go.sum go.sum
# cache deps before building and copying source so that we don't need to re-download as much
# and so that source changes don't invalidate our downloaded layer
RUN GOPROXY=https://goproxy.cn go mod download
# Copy the go source
COPY main.go main.go
COPY api/ api/
COPY controllers/ controllers/
# Build
#RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 GO111MODULE=on go build -a -o manager main.go
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 GO111MODULE=on GOPROXY=https://goproxy.cn go build -a -o manager main.go
# Use distroless as minimal base image to package the manager binary
# Refer to https://github.com/GoogleContainerTools/distroless for more details
FROM gcr.io/distroless/static:nonroot
WORKDIR /
COPY --from=builder /workspace/manager .
USER nonroot:nonroot
ENTRYPOINT ["/manager"]
[root@jdddba memcached-operator]#
[root@jdddba ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
robertch/memcache v1 3fc99446c876 31 seconds ago 46.6MB
<none> <none> 2a1db4498a9b 6 hours ago 1.52GB
myubuntu v1 09f033b88faa 12 days ago 132MB
nginx latest 4f380adfc10f 2 weeks ago 133MB
registry.aliyuncs.com/google_containers/kube-apiserver v1.21.2 106ff58d4308 2 weeks ago 126MB
registry.aliyuncs.com/google_containers/kube-proxy v1.21.2 a6ebd1c1ad98 2 weeks ago 131MB
registry.aliyuncs.com/google_containers/kube-controller-manager v1.21.2 ae24db9aa2cc 2 weeks ago 120MB
registry.aliyuncs.com/google_containers/kube-scheduler v1.21.2 f917b8c8f55b 2 weeks ago 50.6MB
quay.io/coreos/flannel v0.14.0 8522d622299c 7 weeks ago 67.9MB
ubuntu 16.04 f6f49faac5cf 3 months ago 132MB
hello-world latest d1165f221234 4 months ago 13.3kB
registry.aliyuncs.com/google_containers/pause 3.4.1 0f8457a4c2ec 5 months ago 683kB
registry.aliyuncs.com/google_containers/etcd 3.4.13-0 0369cf4303ff 10 months ago 253MB
golang 1.13 d6f3656320fe 11 months ago 803MB
registry.aliyuncs.com/google_containers/kube-proxy v1.18.3 3439b7546f29 13 months ago 117MB
registry.aliyuncs.com/google_containers/kube-controller-manager v1.18.3 da26705ccb4b 13 months ago 162MB
registry.aliyuncs.com/google_containers/kube-apiserver v1.18.3 7e28efa976bd 13 months ago 173MB
registry.aliyuncs.com/google_containers/kube-scheduler v1.18.3 76216c34ed0c 13 months ago 95.3MB
quay.io/coreos/flannel v0.12.0-amd64 4e9f801d2217 16 months ago 52.8MB
registry.aliyuncs.com/google_containers/pause 3.2 80d28bedfe5d 16 months ago 683kB
registry.aliyuncs.com/google_containers/coredns 1.6.7 67da37a9a360 17 months ago 43.8MB
registry.aliyuncs.com/google_containers/etcd 3.4.3-0 303ce5db0e90 20 months ago 288MB
gcr.io/distroless/static nonroot 421f180b71d8 51 years ago 1.82MB
robertchengch/static nonroot 421f180b71d8 51 years ago 1.82MB
[root@jdddba ~]#