写点什么

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

评论

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

Lex Fridman、Sam Altman对话摘要,从高维度看 ChatGPT 是什么?

B Impact

《一文带你看懂:亿级大表垂直拆分的工程实践》

后台技术汇

数据库 后端 三周年连更

Vue3 内置组件

程序员海军

Vue 3 三周年连更

node可以用nvm快速切换版本,golang如何快速切换版本?用gvm就行。

福大大架构师每日一题

Go

掌玩科技×OceanBase:HTAP实时数据分析,降低80%存储成本

OceanBase 数据库

数据库 oceanbase

金蝶赵燕锡:如何选择大模型?融入To B产品?

B Impact

OMG!这个Ins快拍保存到相册的办法绝了!还在犹豫什么,都给我冲!

frank

Instagram

Groovy as关键字性能测试

FunTester

《嗨,城市猎人》首播,揭秘猎头行业职场真实状态

Geek_2d6073

2023-04-19:给定一个非负数组arr 任何两个数差值的绝对值,如果arr中没有,都要加入到arr里 然后新的arr继续,任何两个数差值的绝对值,如果arr中没有,都要加入到arr里 一直到ar

福大大架构师每日一题

Go 算法 rust

3DCAT实时云渲染助力广府庙会元宇宙焕新亮相,开启线上奇趣之旅!

3DCAT实时渲染

元宇宙 实时渲染云 3D实时云渲染

易观千帆 | 2023年3月银行APP月活跃用户规模盘点

易观分析

金融 经济 手机银行

【JVM故障问题排查心得】「GC内存诊断」一文教你如何打印及分析JVM的GC日志(实战分析上篇)

洛神灬殇

JVM GC 4月日更 GC日志

携程商旅白皮书前瞻:商务旅行,迎来怎样的复苏?

携程商旅

技术 企业管理 数字化 商旅系统 差旅报销

图数据库 NebulaGraph 的 Java 数据解析实践与指导

NebulaGraph

Java 数据库

Linux内核中的C语言宏:常见用法和最佳实践

Linux内核拾遗

Linux C语言

测试需求平台 7- 产品管理服务接口一篇搞定

MegaQi

Python 挑战30天学完Python 三周年连更

玩转AIGC,5分钟 Serverless 部署 Stable Diffustion 服务

Serverless Devs

Serverless AIGC Stable Diffustion

阿里云周靖人回答:第一个提出MaaS模式背后的思考路径

B Impact

【Python 实战】Python 采集二手车数据——超详细讲解

BROKEN

三周年连更

如何使用 Linux find 命令查找文件?

wljslmz

三周年连更

华为,找寻科技秋天里的春光

脑极体

通信 算力

算法题每日一练---组合总和

知心宝贝

数据结构 算法 前端 后端 三周年连更

一文初探 Go reflect 反射包

陈明勇

Go golang 反射 三周年连更

免费,无需魔法,媲美ChatGPT4

石云升

AI AIGC ChatGPT 三周年连更

ChatGPT:改变未来沟通方式的人工智能语言模型

wisonzhu

TikTok视频怎么无水印保存到相册?这有啥难的,跟我学轻松变大神~

frank

TikTok

devops如何使用chatgpt提高工作效率

wisonzhu

DevOps

ShareSDK Android SDK API

MobTech袤博科技

测试用例该如何编写?

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

测试

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