选择最适合业务的基础镜像

130 阅读1分钟

镜像类型

  • 通用镜像:例如 ubuntu:latest 是一种通用镜像
  • 专用镜像:例如 golang:1.17 则是一种专用镜像。

通用镜像

  • 使用通用镜像构建符合业务特定要求的镜像,例如特定的工具链和依赖,特定的构建环境和安全工具等。
  • 单纯作为业务的运行环境,常见于多阶段构建。

第一种场景Dockerfile举例

# syntax=docker/dockerfile:1
FROM ubuntu:latest
COPY . .
RUN apt-get update && apt install -y golang-go
RUN go build

常见的通用镜像如图: image.png 在生产环境下,综合镜像的通用性、可调式、安全和镜像大小等各方面因素,最推荐使用ubuntu:latest、debian:slim 和 alpine:latest这三个通用镜像。其中,前两个镜像在本质上其实是同一个类型,而 Alpine 则是一个特殊的 Linux 发行版。

专用镜像

专用镜像提供了特定语言的编译和运行环境,绝大多数语言都有 Docker 官方维护的专用镜像。在实际工作中,专用镜像一般有下面两种使用场景。

  • 作为解释型语言的运行镜像使用,例如 python:latest、php:8.1-fpm-buster 等。
  • 作为编译型语言多阶段构建中编译阶段的基础镜像使用,例如 golang:latest。

此文章为3月Day05学习笔记,内容来源于极客时间《云原生架构与 GitOps 实战》,强烈推荐该课程!