简介

Alpine 操作系统是一个面向安全的轻型 Linux 发行版。它不同于通常 Linux 发行版,Alpine 采用了 musl libcbusybox 以减小系统的体积和运行时资源消耗,但功能上比 busybox 又完善的多,因此得到开源社区越来越多的青睐。在保持瘦身的同时,Alpine 还提供了自己的包管理工具 apk,可以通过 https://pkgs.alpinelinux.org/packages 网站上查询包信息,也可以直接通过 apk 命令直接查询和安装各种软件。

Alpine 由非商业组织维护的,支持广泛场景的 Linux发行版,它特别为资深/重度Linux用户而优化,关注安全,性能和资源效能。Alpine 镜像可以适用于更多常用场景,并且是一个优秀的可以适用于生产的基础系统/环境。

Alpine Docker 镜像也继承了 Alpine Linux 发行版的这些优势。相比于其他 Docker 镜像,它的容量非常小,仅仅只有 5 MB 左右(对比 Ubuntu 系列镜像接近 200 MB),且拥有非常友好的包管理机制。官方镜像来自 docker-alpine 项目。

目前 Docker 官方已开始推荐使用 Alpine 替代之前的 Ubuntu 做为基础镜像环境。这样会带来多个好处。包括镜像下载速度加快,镜像安全性提高,主机之间的切换更方便,占用更少磁盘空间等。

以下特点:

1、小巧:基于Musl libc和busybox,和busybox一样小巧,最小的Docker镜像只有5MB;

2、安全:面向安全的轻量发行版;

3、简单:提供APK包管理工具,软件的搜索、安装、删除、升级都非常方便。

4、适合容器使用:由于小巧、功能完备,非常适合作为容器的基础镜像。

 

优势

  1. Alpine Linux的Docker镜像特点是轻巧(大小只有5M)且有完整的包管理工具(APK)。
  2. Docker官方镜像可能会用Alpine Linux替换Ubuntu。

劣势

  1. Alpine Linux使用了musl,可能和其他Linux发行版使用的glibc实现会有些不同。
  2. musl实现的DNS服务不会使用resolv.conf文件中的search和domain两个配置,通过DNS来进行服务发现时需要注意。解决方法

 

 

 

本地安装

Alpine Linux是一个完整的操作系统,像其他操作系统一样,可以将Alpine安装到本地硬盘中。

主要是在安装过程中,指定一些电脑的基本设置,比如键盘布局、主机名、网卡、IP地址、root口令修改、时区设置、软件仓库地址、SSH服务器、NTP客户端、系统安装方式、磁盘格式化等。

 

打开官网(https://alpinelinux.org/downloads/),找到对应平台的镜像下载,默认就是向x86_64镜像。

setup-alpine

不管是刻录U盘还是在虚拟机里启动,进入终端之后,输入root默认无密登陆,然后执行setup-alpine命令,在终端上启动他的安装程序。

询问键盘布局,输入cn

后面的配置选项,"hostname"、"网卡配置"、"IP地址配置"、"配置dns"等一系列选择默认即可,有需要的可以根据实际情况修改。

手动输入AsiaShanghai

这里如果联网了,输入f回车,让程序自动匹配当前最快的软件源。可能会花一点时间。尽量不要跳过,因为后面格式化硬盘的时候需要联网安装相关的命令。

跟着的ssh和NTP默认即可

询问"Availabe disks are"和"Which disks would you like to use?"来选择安装的硬盘,可以输入"?"来列举可用硬盘,然后手动输入,这里安装到sda,也可以选择其他位置。

在询问你"How would you like to use it?",这里输入sys硬盘安装,其余的"data"、"lvm"可以了解一下。

格式化硬盘然后复制文件需要些时间,完成之后会提示"Installation is complete",这时候拔掉U盘或者设置硬盘第一启动,就可以重启了。

 

配置和使用

网络相关文件

更新国内源

软件包管理工具apk的基本使用

 

开启SSH服务

默认 alpine 没有开启远程登录权限。 ssh远程登录不了。

安装nginx

安装openjdk

因为Alpine linux使用的是musl,与常见的glibc不同,Musl是一个轻量级的C标准库。所以oracle上下载的jdk和openjdk无法直接使用。自己动手编译需要花费几倍的时间精力,可以找已经打包好了的针对musl编译的openjdk来直接安装。azul提供了针对Alpine linux的openjdk,可以直接拿来安装。

azul官网

安装过程和普通的jdk安装就没有任何区别了,下载tar包解压到安装目录,配置环境变量即可。

安装glibc

这是作为Alpine Linux包运行的GNU C库,用于运行链接的二进制文件glibc。

github

除了包之外localdef还需要glibc-binglibc-i18nglibc包。

You will need to generate your locale if you would like to use a specific one for your glibc application. You can do this by installing the glibc-i18n package and generating a locale using the localedef binary. An example for en_US.UTF-8 would be:

设置时区

setup-alpine安装前面不仔细看,设置时区容易忽略,好多程序用到的时间校验就容易出问题。用到手动在alpine 下修改UTC时间为CST时间。

 

体验Alpine Linux Docker Image

官网

特点

通过阅读官方说明,简单的总结一下这个镜像

获取

运行

由于启用一个镜像必须有一个进程,所以我们运行ash(Bash in alpine)

APK包管理命令

服务管理

实战

下面进入实战环节,让我们配置一个最简单的Nginx+PHP运行环境吧!

新建

添加软件

配置supervisor

配置nginx

新建PHP文件

运行

查看

外部新启一个终端查看