docker yum 升级到最新版本使用多阶构建

Docker从17.05版本开始Docker在构建镜像dockerfile时增加了新特性:多阶段构建(multi-stage builds),将构建过程分为多个阶段,每个阶段都可以指定一个基础镜像

关于构建图像,最具挑战性的事情之一是保持图像尺寸变小。Dockerfile中的每条指令都会在映像上添加一层,您需要记住在移至下一层之前清除不需要的任何工件。为了编写一个真正有效的Dockerfile,传统上,您需要使用shell技巧和其他逻辑来使各层尽可能的小,并确保每一层都具有上一层所需的工件。

实际上,通常只有一个Dockerfile用于开发(包含构建应用程序所需的一切),而精简的Dockerfile用于生产时,它仅包含您的应用程序以及运行该应用程序所需的内容。这被称为“构建者模式”。维护两个Dockerfile是不理想的。

以前在dockerfile编写时,为了减少RUN的多层使用,经常讲编写好的shell脚本拷贝到镜像里面并引用造成buile失败或者维护困难的情况,而多阶构建可以将上层生成的文件等通过from在下层引用

dockerfile

FROM golang:1.7.3        #第一层默认起始编号为0  可以使用AS name 命名
WORKDIR /go/src/github.com/alexellis/href-counter/
RUN go get -d -v golang.org/x/net/html  
COPY app.go .
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .

FROM alpine:latest  
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=0 /go/src/github.com/alexellis/href-counter/app .      #--from=上层命名的name
CMD ["./app"]  


$ docker build -t alexellis2/href-counter:latest .

 第二FROM条指令以alpine:latest图像为基础开始新的构建阶段COPY --from=0行仅将先前阶段中构建的工件复制到新阶段。Go SDK和任何中间工件都被保留了下来,没有保存在最终图像中。

 

YUM升级docker(centos7)

查看已安装的包

rmp -qa | grep docker

卸载

yum remove 包名

使用curl升级到最新版

 

# curl -fsSL https://get.docker.com/ | sh

 

 

yum源安装

yum-config-manager \
--add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

#查看可用版本
yum list docker-ce --showduplicates | sort -r

安装重启

 

参考官方文档https://docs.docker.com/develop/develop-images/multistage-build/

 

posted @ 2020-04-13 10:04  杨大帅哥  阅读(926)  评论(0编辑  收藏  举报