AICon 深圳站聚焦 Agent 技术、应用与生态,大咖分享实战干货 了解详情
写点什么

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:0040456

评论

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

《containerd 系列》一文读懂 containerd 中的 NRI 机制

公众号:云原生Serverless

Docker Kubernetes 容器技术 Containerd NRI

重庆兴农担保集团携手嘉为蓝鲸,锻造运维能力底座,精益信息化管理

嘉为蓝鲸

IT运维 自动化运维 嘉为蓝鲸

《containerd 系列》【史上最全】带你全方位了解containerd 的几种插件扩展模式

公众号:云原生Serverless

Docker Kubernetes 云原生 容器技术 Containerd

语雀迁移支付宝云开发:安全与弹性双重升级,开启业务发展新篇章

TRaaS

小程序云开发 云开发 语雀

Nacos 安全零信任实践

阿里巴巴云原生

阿里云 云原生 nacos

基于rrweb框架,搭建前端技术运营监控体系的实践分享

智在碧得

框架设计 rrweb框架 rrweb 前端框架设计 技术监控

数据统一高效管理 HashData支撑“数智石油”高质量发展

酷克数据HashData

采集 Kubernetes 容器日志最佳实践

观测云

#Kubernetes#

Apache RocketMQ ACL 2.0 全新升级

阿里巴巴云原生

阿里云 云原生 Apache RocketMQ

CyberData统一元数据服务

数新网络官方账号

大数据

AI工程师看这里!与真实世界数据“亲密拥抱”的机会来了!

AI浩

人工智能

开源大模型到底是不是真开源?

三掌柜

《containerd 系列》一文了解 containerd 中的镜像加解密

公众号:云原生Serverless

Docker 云原生 ,docker Docker 镜像 Containerd

抖音商单信息通过ETL工具快速同步

RestCloud

数据处理 抖音 数据同步 ETL

【论文速读】|理解基于大语言模型的模糊测试驱动程序生成

云起无垠

《containerd 系列》作为资深 CRUD Boy,你知道 containerd 是如何保存容器元数据的吗?

公众号:云原生Serverless

Docker Kubernetes 云原生 容器技术 Containerd

手把手教你使用ChatGPT写论文;如何使用ChatGPT写论文?

蓉蓉

openai ChatGPT GPT-4

JDK14新增关键字——record

FunTester

《containerd 系列》一文了解 containerd 中的 snapshot

公众号:云原生Serverless

Kubernetes 云原生 容器技术 ,docker Containerd

京东JD商品详情API返回值全面解析

技术冰糖葫芦

api 货币化 API 接口 API 文档 pinduoduo API

《containerd 系列》一文缕清 CRI 的发展脉络

公众号:云原生Serverless

Docker Kubernetes 云原生 容器技术 Containerd

高可用 - 隔离原则

京东零售技术

架构 高可用 企业号 4 月 PK 榜

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