优化容器镜像
CloudBase 云托管支持托管任意镜像,但我们建议您尽可能地优化您的镜像,以获得更快的启动速度、更快的构建速度、更小的容器体积、更优的服务性能。
以下是一些推荐做法:
选择更小的基础镜像
同样一种语言的运行时容器,由于选择的基础容器不同,体积也会有很大的差异,对于大多数业务,我们推荐您使用更小的基础镜像。
以 Node.js 为例,官方镜像仓库 提供了以下不同体积的基础镜像:
REPOSITORY TAG IMAGE ID CREATED SIZE
node 15 ca36fba5ad66 2 days ago 941MB
node 15-slim 922b09b21278 2 days ago 165MB
node 15-buster 36754275e286 2 days ago 910MB
node 15-buster-slim eda2c7e487ff 2 days ago 179MB
node 15-alpine 1e8b781248bb 2 days ago 115MB
可以注意到 15-slim、15-buster-slim、15-alpine 的体积明显较小,这是由于它们使用了经过裁剪的底层操作系统镜像。使用这些裁剪、优化后的镜像通常不会影响您服务的运行。
减少镜像层数
Dockerfile 中的每一行指令,都会生成一个层,镜像的层数会直接影响镜像的体积大小。
我们推荐您将多个指令合并串联,以减少层的数量。例如,您可以将以下的指令合并为同一个:
RUN cd my-app
RUN make
RUN make install
RUN rm -rf /tmp
合并后:
RUN cd my-app && \
make && \
make install && \
rm -rf /tmp