【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

Alpine Linux,一个只有 5M 的 Docker 镜像

  • 2016-01-06
  • 本文字数:1182 字

    阅读完需:约 4 分钟

简介

Alpine Linux Docker 镜像基于 Alpine Linux 操作系统,后者是一个面向安全的轻型 Linux 发行版。不同于通常 Linux 发行版,Alpine Linux 采用了 musl libc busybox 以减小系统的体积和运行时资源消耗。在保持瘦身的同时,Alpine Linux 还提供了自己的包管理工具 apk,可以在其网站上查询,或者直接通过apk 命令查询和安装。

Alpine Linux Docker 镜像也继承了 Alpine Linux 发行版的这些优势。相比于其他 Docker 镜像,它的容量非常小,仅仅只有 5M,且拥有非常友好的包管理器。

下表是一些官方镜像的大小:

除了小,Alpine 镜像的另外一大优势就是内置完整包管理器。相较于其他微型基础镜像(如 busybox,基础镜像大小为 1.113MB),拥有一个包管理器,可以快速构建应用镜像。例如这个 dnsmasq 镜像,Dockerfile 非常简单,仅仅运行了 Alpine 提供的 apk 工具安装了 dnsmasq 包即可:

复制代码
FROM alpine:3.2
RUN apk -U add dnsmasq
EXPOSE 53 53/udp
ENTRYPOINT ["dnsmasq", "-k"]

使用

由于 Alpine Linux 有完整的包管理器,其使用方式和其他的基础镜像类似,直接使用其包管理命令 apk 即可。

如 README 中例子,如果需要安装一个 mysql 客户端,只需要创建如下 Dockerfile:

复制代码
FROM gliderlabs/alpine:3.3
RUN apk add --no-cache mysql-client
ENTRYPOINT ["mysql"]

然后通过docker build命令,即可构建出自己的 mysql 客户端。同样,基于 Alpine Linux 构建出来的镜像,有其空间上的巨大优势:

复制代码
docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
alpine/mysql latest edf988b8f4c8 58 seconds ago 35.74 MB

争论

对于 Alpine Linux, Hacker News 上争论还是比较激烈的。

首先是空间占用问题,小是 Alpine Linux 的最大优势,但是 Docker 的文件系统可以进行分层缓存,对于已经构建或者拉取过镜像的机器来说,每次的增量更新内容可能并不会很多。也就是说,如果所有镜像都使用相同的基础镜像,这个镜像在所有机器上都只会拉取一遍。

另外,Alpine Linux 使用了 musl,可能和其他 Linux 发行版使用的 glibc 实现会有所不同。在容器化中最可能遇到的是 DNS 问题,即 musl 实现的 DNS 服务不会使用 resolv.conf 文件中的 search 和 domain 两个配置,这对于一些通过 DNS 来进行服务发现的框架可能会遇到问题。

总结

Alpine Linux,一个只有 5M 的 Docker 镜像,它尽可能的简化了镜像的大小,易于分发,有着完善的包管理器和预编译的包。如果你需要一个干净、简洁的容器,开始尝试使用吧!


感谢魏星对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群InfoQ 好读者(已满),InfoQ 读者交流群(#2)InfoQ 好读者)。

2016-01-06 18:0038666

评论

发布
暂无评论
发现更多内容

Peplink 成为首家授权 Starlink 技术服务商

财见

只需三步,开发文心一言应用帮你建立情感纽带!

飞桨PaddlePaddle

人工智能 深度学习 #飞桨# 飞桨AI

优化-Spring Boot项目服务端接口超时设置

alexgaoyh

Spring Boot Callable接口 @Transactional 接口超时

Hologres V2.1版本发布,新增计算组实例构建高可用实时数仓

阿里云大数据AI技术

BAT程序员常用的开发工具,建议收藏!

快乐非自愿限量之名

腾讯 阿里 开发工具 BAT

基于企业级SaaS低代码平台的协同制造产品解决方案

万界星空科技

低代码 MES系统 低代码开发 万界星空科技 低代码云MES

大白话—70个你必须知道的AI重要概念(二)

Geek_2305a8

金融行业首个海量数据处理技术报告发布,“五化”技术助力金融数据潜能释放

腾讯云大数据

大数据

如何使用Postman导入Swagger API文档

Liam

后端 Postman 接口文档 API swagger

鸿蒙HarmonyOS实战-ArkTS语言(基本语法)

不在线第一只蜗牛

HarmonyOS 鸿蒙开发 HarmonyOS框架

操作系统寒武纪 :鸿蒙来了企业IT高兴吗?

FN0

鸿蒙 操作系统 HarmonyOS

移动应用崛起新契机—超级app+轻应用!

Geek_2305a8

大白话—70个你必须知道的AI重要概念(三)

Geek_2305a8

管理型人格特质揭秘:适合测试管理的人应具备何种素质

测吧(北京)科技有限公司

测试

又一大模型技术开源!有道自研RAG引擎QAnything正式开放下载

有道技术团队

记一次go应用在k8s pod已用内存告警不准确分析

EquatorCoco

Kubernetes go语言

数据安全应急响应政策汇总:一份从无到有的应急预案实战指南(附下载)

极盾科技

MES生产执行系统在生产车间的主要作用

万界星空科技

工业互联网 MES系统 生产管理系统 mes 数字化车间

ERP对接MES的3种类型的接口

万界星空科技

低代码 MES系统 系统集成 万界星空科技 系统对接

IntelliJ IDEA安装教程

小魏写代码

华为云医疗智能体eiHealth的高性能--AI助力医疗智慧化升级

华为云PaaS服务小智

人工智能 医疗 华为云

测试管理者的晋升秘籍:稳步提升职业地位的关键步骤

测吧(北京)科技有限公司

测试

测试管理的核心知识点:岗位与职责全面解析

测吧(北京)科技有限公司

测试

面试官:分库分表后如何生成全局ID?

王磊

Java 面试

构建智算时代的云原生应用平台,2023 云原生产业大会,阿里云在这里!

阿里巴巴云原生

阿里云 容器 云原生

GreptimeDB v0.6 发布 | 支持 Datanodes 间迁移数据表 Region

Greptime 格睿科技

数据库 时序数据库 版本发布

《机器人流程自动化能力评估体系 第1部分:系统和工具》行标发布

王吉伟频道

RPA 机器人流程自动化 信通院 超自动化 行业标准

SHQ Response 重新定义网络风险可视化与协作规则

财见

使用API接口获取拼多多商品详情

Noah

掌握测试管理的能力图谱:方法论、技术与资源管理全解析

测吧(北京)科技有限公司

测试

阿里云云原生助力安永创新驱动力实践探索

阿里巴巴云原生

阿里云 云原生

Alpine Linux,一个只有5M的Docker镜像_语言 & 开发_金灵杰_InfoQ精选文章