实践经验

精简镜像大小

由于Docker容器的文件系统采用了写入时拷贝技术,这项技术的作用是加快容器的启动时间,跟一般的虚拟机相比,容器的启动速度确实非常快。虽然该技术在很大程度上提升了docker容器的运行效率,但是也会增加磁盘读写方面的开销。 同时也为了避免大量时间都花费在等待镜像的来回传送上,精简镜像大小是非常有必要的。

减少镜像Layer层数

每次在Dockerfile中执行RUN命令的时候系统都会在镜像中新建一个层,每个镜像层都会占用一定的磁盘空间,因此为了尽量减少镜像的层数,最好把解压、删除等所有文件操作都写在同一行RUN命令下。

迁移数据

不要把训练数据等直接COPY到镜像中,由于数据往往过于庞大,不仅占用存储空间,致使性能下降,更会导致敏感数据泄露。可以利用分布式文件系统、数据库等存储数据。一般在部署应用的时候进行挂载,从而使用数据。

有效删除不必要文件

在下载压缩包或者其他归档文件的时候,可以将其解压,以及立即删除归档文件。但前提是这几个操作还是要在同一个RUN命令下。

RUN yum -y update && \
    yum install -y libstdc++.so.6 mariadb && \
    yum clean all && \
    rm -rf /tmp/* /var/tmp/* /data/tmp/*
RUN apt-get update && apt-get install -y \
    python3 \
    python3-pip \
    nano \
    && rm -rf /var/lib/apt/lists/*

latest

不要误以为latest版本镜像是最新与最稳定的版本镜像,这可能是个惯例,但并不是出于任何严格的规定。与所有其他版本镜像一样,当有新的版本push到镜像仓库中,latest标签的镜像也不会自动更新。

results matching ""

    No results matching ""