|NO.Z.00116|——————————|^^ 制作 ^^|——|KuberNetes&Docker操作.V14|——|docker.v04|基于scratch制作小镜像|
一、基于scratch创建镜像小镜像
### --- 下载scratch镜像版本包
~~~     可以查看到是没有这个镜像的,但是它可以被直接拿来用的。
[root@k8s-master01 dockerfiles]# docker pull scratch
Using default tag: latest
Error response from daemon: 'scratch' is a reserved name二、基于scratch制作镜像:创建dockerfile
### --- 创建dockerfile
[root@k8s-master01 dockerfiles]# vim Dockerfile 
#build step
FROM golang:1.14.4-alpine as builder
WORKDIR /opt
COPY main.go /opt
RUN go build /opt/main.go
CMD "./main"
#create real app image
FROM scratch
COPY --from=builder /opt/main /
CMD "./main"三、基于scratch制作镜像;构建镜像
### --- 构建镜像
[root@k8s-master01 dockerfiles]# docker build -t hello:scratch .
Step 6/8 : FROM scratch
 ---> 
Step 7/8 : COPY --from=builder /opt/main /
 ---> d37fdd61609b
Step 8/8 : CMD "./main"
 ---> Running in 0cf102ab122f
Removing intermediate container 0cf102ab122f
 ---> 34bb3db84f88
Successfully built 34bb3db84f88
Successfully tagged hello:scratch四、基于scratch制作镜像:查看制作的镜像大小
### --- 查看镜像大小
~~~     镜像是非常小的,大小就是main的大小
[root@k8s-master01 dockerfiles]# docker images
REPOSITORY                                                        TAG                 IMAGE ID       CREATED             SIZE
hello                                                             scratch             34bb3db84f88   20 seconds ago      2.07MB五、基于scratch制作镜像:运行制作的镜像
### --- 运行制作的镜像
~~~     也是可以执行的
~~~     go语言编译的时候是可以把所有东西都打入到二进制文件里面的,而且没有依赖任何中间库,全是静态的移植,就可以使用scratch
~~~     不管什么语言都会依赖到动态库或者系统环境,若是使用scratch可能会产生一些问题,解决方案,可以吧需要的拷贝到镜像里面。
[root@k8s-master01 dockerfiles]# docker run -ti --rm hello:scratch /main
hello.golang                                                                        六、镜像做了修改后如何配置:FROM golang:base
### --- 修改镜像dockerfile配置参数
~~~     修改镜像内容:FROM golang:base
~~~     这个镜像做了修改怎么办;若是这个镜像本地就已经有了,但是镜像内容做了修改该怎么办。
~~~     就是需要docker build --pull参数来进行重复它来把修改的内容重新加入
[root@k8s-master01 dockerfiles]# vim Dockerfile
#build step
FROM golang:1.14.4-alpine as builder
WORKDIR /opt
COPY main.go /opt
RUN go build /opt/main.go
CMD "./main"
#create real app image
FROM golang:base
COPY --from=builder /opt/main /
CMD "./main"### --- 重新build,更新配置参数
~~~     更新配置参数
[root@k8s-master01 dockerfiles]# docker build -t --pull hello:scratch .Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor
 
                    
                     
                    
                 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号 
