2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

评论

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

大模型训练中的学习率调整策略

百度开发者中心

人工智能 深度学习 大模型

自己有粮,何须翻墙!ChatGPT4.0中文版

Geek_ccdd7f

谷歌Freshness新鲜度算法:如何利用它提升网站排名?

九凌网络

为什么一再建议企业要做谷歌广告投放?

九凌网络

ROLA-IP在HTTP海外IP代理市场的优势

Geek_bf375d

如何有效解决UDP协议传输问题实现快速安全的文件传输

镭速

UDP协议 UDP传输

实例讲解基于Sermant快速开发服务治理插件

华为云开发者联盟

云原生 后端 华为云 华为云开发者联盟

AE真实辉光特效插件:Real Glow for Mac汉化版

彩云

AE插件 Real Glow

如何基于IM SDK从零开发移动端IM聊天功能

音视频开发_AIZ

IM 实时音视频 音视频开发 即时通讯IM 直播间

500种专业级Lut调色集合包

彩云

lut调色预设 LUTMASTER

基于 Flink CDC 打造企业级实时数据集成方案

阿里云大数据AI技术

开源

如何最大化客户生命周期价值?APMDR 模型在袋鼠云的落地实践

袋鼠云数栈

大数据 数字化转型 用户生命周期 用户运营 智能标签

如何选择最佳独立服务器提供商?加速你的在线业务成功之路

一只扑棱蛾子

独立服务器

全球代理HTTP的使用范围?罗拉ROLA-IP表现突出

Geek_bf375d

大模型训练的充分性判断

百度开发者中心

人工智能 深度学习 大模型

云电脑的运行原理是什么?如何实现

青椒云云电脑

云桌面 云电脑 云电脑平台

Wireshark的捕获接口设置

小魏写代码

软件测试/人工智能|PPT不好写,问问ChatGPT

霍格沃兹测试开发学社

许多朋友问我有没有好用的海外代理IP

Geek_bf375d

ROLA-IP海外IP代理全球动态ip代理用途分析

Geek_bf375d

CQ 社区版 V2.6.0 发布 | SQL闪回、权限看板、新增数据源人大金仓等

BinTools图尔兹

sql 数据库管控 人大金仓 南大通用 数据安全运维

五种在 JavaScript 中创建对象的方法

树上有只程序猿

JavaScript

软件测试 | 金融平台封控模型实战技术:人工智能在金融风控中的应用

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

测试

听说90%的人都没搞定手撕协程池这道面试题!

王中阳Go

Go golang 面试题 Go进阶 协程池

软件测试/人工智能|如何利用人工智能来帮助我们找bug

霍格沃兹测试开发学社

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