• 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/

  • 相关阅读:
    码农雷林鹏:php环境搭建
    HashMap底层实现原理
    Java基础面试题
    ==和equals的区别,为什么重写equals要重写hashCode
    Java8 函数式接口,方法引用,stream
    ArrayList、Vector、LinkedList的区别
    第二章——信息的表示和处理
    第一章——计算机系统漫游
    通过zuul修改请求参数——对请求参数进行解密
    Java 扫描实现 Ioc 动态注入,过滤器根据访问url调用自定义注解标记的类及其方法
  • 原文地址:https://www.cnblogs.com/aloneysir/p/12689619.html
Copyright © 2020-2023  润新知