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/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM