作家
登录

理解Docker的多阶段镜像构建

作者: 来源: 2017-11-14 09:05:22 阅读 我要评论

RUN chmod +x /root/myhttpserver 
  •  
  • WORKDIR /root 
  • ENTRYPOINT ["/root/myhttpserver"
  • 履行构建:

    Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践

    1. # docker build -t myrepo/myhttpserver:latest . 
    2. Sending build context to Docker daemon  5.894MB 
    3. Step 1/5 : FROM ubuntu:14.04 
    4.  ---> dea1945146b9 
    5. Step 2/5 : COPY ./myhttpserver /root/myhttpserver 
    6.  ---> 993e5129c081 
    7. Step 3/5 : RUN chmod +x /root/myhttpserver 
    8.  ---> Running in 104d84838ab2 
    9.  ---> ebaeca006490 
    10. Removing intermediate container 104d84838ab2 
    11. Step 4/5 : WORKDIR /root 
    12.  ---> 7afdc2356149 
    13. Removing intermediate container 450ccfb09ffd 
    14. Step 5/5 : ENTRYPOINT /root/myhttpserver 
    15.  ---> Running in 3182766e2a68 
    16.  ---> 77f315e15f14 
    17. Removing intermediate container 3182766e2a68 
    18. Successfully built 77f315e15f14 
    19. Successfully tagged myrepo/myhttpserver:latest 
    20.  
    21. # docker images 
    22. REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE 
    23. myrepo/myhttpserver   latest              77f315e15f14        18 seconds ago      200MB 
    24.  
    25. # docker run myrepo/myhttpserver 
    26. Webserver start 
    27.   -> listen on port:1111 

    以上是最根本的image build办法。

    接下来,我们可能会碰到如下需求:

    * 搭建一个Go法度榜样的构建情况有时刻是很耗时的,尤其是对那些依附很多第三方开源包的Go应用来说,下载包就须要很长时光。我们最好将这些易变的器械一切打包到一个用于Go法度榜样构建的builder image中;

    * 我们看到膳绫擎我们构建出的myrepo/myhttpserver image的SIZE是200MB,这似乎有些过于“宏大年夜”了。固然每个主机node上的docker有cache image layer的才能,但我们照样欲望能build出加倍精简短小的image。

    2、借助golang builder image

    构建这个builder image:


    Play with Docker labs

    Docker Hub上供给了一个带有go dev情况的官方 golang image repository ,我们可以直接应用这个golang builder image来帮助构建我们的应用image;对于一些对第三方包依附较多的Go应用,我们也可以以这个golang image为base image定制我们本身的专用builder image。

    我们基于golang:latest这个base image构建我们的golang-builder image,我们编写一个Dockerfile.build用于build golang-builder image:

    我们先来看一下针对膳绫擎例子,multi-stage build所应用Dockerfile:

    1. // github.com/bigwhite/experiments/multi_stage_image_build/isomorphism/Dockerfile.build 
    2. FROM golang:latest 
    3.  

    4.   推荐阅读

        Mobile Pwn2Own世界黑客大赛攻破iOS11,iPhone X被远程越狱

      Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践 信赖会有越来越多的年青人参加到收集安然行业中来,以“没有收集安然就没有国度安然”为指导,>>>详细阅读


      本文标题:理解Docker的多阶段镜像构建

      地址:http://www.17bianji.com/lsqh/38807.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)