docker push 和 Dockerfile ----在 RUN 中指定环境变量

简单介绍下什么时候会需要 docker push:

  1. 当你在某个容器中,做了下修改后,想要"保存"住当前修改,可以用 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: 指定要创建的目标镜像名
    
  2. 服务器(可以访问公网)因为墙的原因下载不了(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 ~]# 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值