轻量级发行版 Alpine Linux 介绍

Alpine Linux 操作系统是由社区开发的,面向安全的轻型 Linux 发行版,它和其他常见的 Linux 发行版不同。Alpine 采用了 musl libc 和 busybox 以减小系统体积和运行时的资源消耗,功能上要比 busybox 完善的多,因此得到开源社区越来越多的青睐。

轻量级发行版 Alpine Linux 介绍

在保持瘦身的同时,Alpine 提供了自己的包管理工具 apk,可以在官方网站上查询包信息,也可以通过类似 apt 和 yum 的方式,在命令行查询或安装软件。

Alpine 支持广泛的场景,它特别为资深/重度Linux用户而优化,关注安全,性能和资源利用率,是一个优秀的可适用于生产环境的基础系统。

Alpine Docker 镜像继承了 Alpine Linux 发行版的这些优势。相比于其他 Docker 镜像,Alpine 只有仅仅 5 MB 大小,并且拥有很友好的包管理机制。

Docker 官方推荐使用 Alpine 替代 Ubuntu 做为容器的基础镜像。这样会带来众多好处,镜像下载速度更快,镜像安全性提升,主机之间的切换更方便,占用更少磁盘空间等。

下表是官方容器镜像的大小对比:

REPOSITORY          TAG           IMAGE ID          VIRTUAL SIZE
 alpine              latest        4e38e38c8ce0      4.799 MB
 debian              latest        4d6ce913b130      84.98 MB
 ubuntu              latest        b39b81afc8ca      188.3 MB
 centos              latest        8efe422e6104      210 MB

获取并使用官方镜像

由于镜像很小,下载时间往往很短,读者不妨测试直接用 docker run 指令运行一个 Alpine 容器,并指定运行的 Linux 指令所需要的时间,

$ time docker run alpine echo debian.cn
Unable to find image 'alpine:latest' locally
latest: Pulling from library/alpine
c9b1b535fdd9: Pull complete
Digest: sha256:ab00606a42621fb68f2ed6ad3c88be54397f981a7b70a79db3d1172b11c4367d
Status: Downloaded newer image for alpine:latest
debian.cn

real    0m5.315s
user    0m0.028s
sys     0m0.019s

迁移至 Alpine 基础镜像

目前大部分 Docker 官方镜像都已经支持 Alpine 作为基础镜像,可以很容易进行迁移。例如:

ubuntu/debian -> alpine
python:2.7 -> python:2.7-alpine
ruby:2.3 -> ruby:2.3-alpine

另外,如果使用 Alpine 镜像替换 Ubuntu 基础镜像,安装软件包时需要用 apk 包管理器替换 apt 工具,如,

$ apk add --no-cache 

Alpine 中软件安装包的名字可能会与其他发行版有所不同,可以官方网站上搜索并确定安装包名称。如果需要的安装包不在主索引内,但是在测试或社区索引中。那么可以用以下方法访问这些包,

$ echo "http://dl-4.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories
$ apk --update add --no-cache

参考资源

Alpine 官网:https://alpinelinux.org/
Alpine 官方仓库:https://github.com/alpinelinux
Alpine 官方镜像:https://hub.docker.com/_/alpine/
Alpine 官方镜像仓库:https://github.com/gliderlabs/docker-alpine

继续阅读
avatar
  • 本文由 发表于 2018年6月16日
  • 除非特殊声明,本站文章许可协议为"署名-非商用-相同方式共享 4.0",转载请保留原链、作者等信息。
如何重启 Kubernetes 中的 Pods 开发者

如何重启 Kubernetes 中的 Pods

在使用 Docker 时,我们可以使用 docker restart container_id 来非常方便的重启容器,但是在 kubernetes 中并没有重启 pod 的命令。有时 Pod 意外终止...