美文网首页docker容器
Docker容器构建及使用过程中优化的10条建议

Docker容器构建及使用过程中优化的10条建议

作者: 佛系小懒 | 来源:发表于2020-02-02 13:04 被阅读0次

    镜像体积最小化

    1. 基础镜像的选择:
    常用的 Linux 系统镜像一般有 ubuntu、centos、debian,其中debian 更轻量,而且适用的用途很广

    2. 减少镜像层数:
    在一个Dockerfile中每个命令都会在原来的基础上生成一层镜像,这毫无疑问将会对镜像增加体积,尽量将RUN命令进行组合,这将有效的减少镜像层数达到减少体积的效果。

    3. 清除缓存和临时文件:
    在镜像构建过程中,可能会适用apt-get或yum等方式进行包的安装,在完成后系统会残留一些不必要的文件,或者适用源代码进行编译某些应用时,源代码文件夹将会存放在镜像中,在镜像构建的最后步骤,可以将这些不必要的文件进行删除。yum clean all

    4. 镜像服务化:
    当有多个服务时,分开多个镜像去运行这些服务,各司其职,例如在同一个镜像中打包了Apache httpd、MySQL、PHP,这无疑造成该镜像耦合性太差且体积臃肿。建议采用不同的镜像去托管不同的应用。

    构建速度最快化

    5. 构建缓存
    在构建过程中,如果可以利用到缓存无疑将提升构建的速度,缓存的触发原则是单个指令的内容没有变化,则Docker构建时就会默认去使用缓存。我们可以通过将一些不变的操作独立成单独的指令,这样在构建时只会对有产生变化的指令构建,而不变的指令将会使用缓存。
    6. 删除构建目录额外的文件

    在构建镜像时将会上传构建文件夹中的所有文件,但有时不是全部的文件都是构建所需的,可以通过.dockerignore文件进行过滤,这将提高构建的速度及镜像的大小。

    7. 优化网络请求
    在构建镜像过程中,可能有指令需要使用网络去实现下载、安装等操作,由于网络的不确定性,可能会造成构建过程较久,而且构建的时间不一等问题,建议采用本地化引用网络资源来解决问题,例如Centos使用yum进行软件包的管理时,可以通过Nexus进行本地代理,从而减少网络请求的问题。

    使用优化

    8. 使用CMD、VOLUME指令对Image进行服务化
    在不同的业务场景中会对镜像有不同的应用,但如果每次需要进行手动添加一些业务特定的东西时是比较繁琐的,可以采用CMD、VOLUME指令进行镜像的服务化弹性定制。

    9. 使用LABEL对镜像进行元数据维护
    在Docker镜像仓库中可能托管很多镜像,每一个镜像通途不一,但靠镜像名和标记是无法判断具体信息的,使用LABEL的方式可以对镜像的元数据进行管理,从而更清晰的知道镜像的信息。

    10. 使用变量
    当一个字符串出现多次时,用ARG来声明变量取代hard code。

    相关文章

      网友评论

        本文标题:Docker容器构建及使用过程中优化的10条建议

        本文链接:https://www.haomeiwen.com/subject/erqqxhtx.html