写点什么

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

评论

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

premiere pro 2023的字幕功能使用教程 含PR2023中文下载安装包

南屿

PR adobe PR2023中文版 Premiere Pro字幕

作者推荐 | 【深入浅出MySQL】「底层原理」探秘缓冲池的核心奥秘,揭示终极洞察

码界西柚

MySQL 底层原理 缓冲池 Buffer Pool 2024年第二十三篇文章

《深入理解Kafka:核心设计与实践原理》PDF

程序员李木子

听GPT 讲Rust源代码--compiler(40)

fliter

专业的iOS解锁工具AnyMP4 iPhone Unlocker mac直装免激活版

南屿

Mac软件 iPhone解锁器 iOS解锁 AnyMP4 iPhone

C# 面向对象编程进阶:构造函数详解与访问修饰符应用

小万哥

C# 程序人生 编程语言 软件工程 后端开发

如何应对Android面试官->文件IO、手写APK加固框架核心实现(下)

老A说

Java’ an'droid

微信Mac版怎么下载安装?含Mac版微信防撤回、多开助手

南屿

微信助手 微信分身

好用的截图工具Snagit功能介绍及Snagit中文下载安装

Rose

截图 Snagit下载 Snagit 2023 Snagit截图软件

如何应对Android面试官-> NestedScrollView 嵌套滑动机制详解,手写 NestedScrollView 核心实现

老A说

android UI Java’ View

听GPT 讲Rust源代码--compiler(35)

fliter

听GPT 讲Rust源代码--compiler(39)

fliter

Eagle文件图片管理工具 Eagle mac破解版 支持m1/m2

Rose

Eagle Eagle下载 图片管理软件

Fig Player for mac:自带音乐模式的媒体播放器 支持m1/m2

Rose

Mac软件 Fig Player破解下载 多媒体播放器 Fig Player Mac版

JProfiler 14 mac永久稳定版 含jprofiler14激活许可 兼容M1/M2

南屿

Java JProfiler Mac永久激活版 JProfiler 14

左耳听风 - 管理方式「读书打卡 day 18」

Java 工程师蔡姬

读书笔记 程序员 个人成长 职业发展 管理方式

Turbo Boost Switcher Pro永久激活版 cpu温度检测调节工具 mac软件下载

Rose

苹果电脑 CPU性能 Turbo Boost Switcher Pro cpu频率调节

听GPT 讲Rust源代码--compiler(38)

fliter

Luminar Neo下载破解——智能AI图像编辑处理工具

Rose

Luminar Neo 图像处理软件

Cheetah3D 8:对 Apple Silicon 的原生支持 Metal API 的本机支持

南屿

动画 渲染 3d建模 Cheetah3D注册机 Cheetah3D 8新功能

Red Giant Universe 2024破解版 AE红巨星特效插件包for mac 兼容M1/M2

南屿

红巨人特效插件 视频特效插件 Red Giant2024

解决 Parallels Desktop 虚拟机不能连网的问题 含Parallels19一键激活版安装包

Rose

虚拟机 Parallels Desktop

秒合约丨合约丨现货交易系统开发丨现成源码搭建

l8l259l3365

听GPT 讲Rust源代码--compiler(37)

fliter

苹果电脑专业测试跑分工具:Geekbench 6 mac破解版 支持m1/m2

Rose

系统跑分 Geekbench 6

OpenAI又放大招!大幅暴降,修复GPT-4变懒!

鹤涵

《Kafka权威指南》PDF

程序员李木子

movistpro在mac怎么破解?Movist Pro for mac中文直装破解版下载

Rose

mac视频播放器 Movist Pro 中文版 Movist Pro 破解

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