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/