0x00 前言

Alpine Linux 是一个面向安全的轻型的 Linux 发行版, 基于Alpine Linux的超小型 Docker 镜像, 大小只有 5MB,并且可以访问比其他基于BusyBox的镜像更完整的包存储库。 Alpine Linux采用了 musl libcbusybox以减小系统的体积和运行时资源消耗,由于小巧、功能完备,非常适合用于作为容器的基础镜像。

Alpine Linux 有以下特点:

  • 小巧

Alpine Linux 是围绕musl libcbusybox构建的。这使得它比传统的GNU / Linux发行版更小,资源效率更高。容器不需要超过 8 MB,最小的磁盘安装需要大约 130 MB 的存储空间。不仅可以获得完全成熟的 Linux 环境,还可以从存储库中获得大量的软件包。

二进制包被稀释和拆分,可以更好地控制安装的内容,从而使环境尽可能小而有效。

  • 简单

Alpine Linux是一个非常简单的发行版,它会尽量避免使用。它使用自己的包管理器名为 apk,OpenRC init 系统,提供了一个简单,清晰的 Linux 环境。然后,您可以添加项目所需的软件包,无论是构建 iSCSI 存储控制器,薄薄的邮件服务器容器,还是坚如磐石的嵌入式交换机,没有别的办法阻碍。

  • 安全

Alpine Linux的设计考虑了安全性。内核使用grsecurity / PaX的非官方端口进行修补,所有 userland 二进制文件都编译为具有堆栈粉碎保护的位置独立可执行文件(PIE)。这些主动安全功能可防止利用整个类的零日漏洞和其他漏洞。

0x01 镜像源

1.1 官方镜像源列表:http://rsync.alpinelinux.org/alpine/MIRRORS.txt

1.2 国内镜像源:

1.3 配置软件源

# vi /etc/apk/repositories

# 添加自己要配置的源,然后保存退出
http://dl-cdn.alpinelinux.org/alpine/
http://nl.alpinelinux.org/alpine/
http://uk.alpinelinux.org/alpine
http://dl-2.alpinelinux.org/alpine/

0x02 apk 软件包管理

介绍

alpine 提供了比较好用的软件包管理工具 apk, 通过该命令可以下载、删除、升级软件等,但是 apk 和 apt-get 以及 yum 语法上还是有区别的。

命令

通过 apk –help 可以查看 apk 有哪些命令

命令用法–以 nginx 为例

2.1 升级当前软件包

  • apk update 更新本地镜像源
  • apk upgrade 升级所有已安装的软件包,一般包括内核
  • apk add –upgrade nginx 升级指定软件包

2.2 查询软件包的信息

  • apk info 列出已经安装的软件包
  • apk info nginx 显示软件包的信息
  • apk info -a nginx 显示软件包完整的信息

2.3 搜索软件包

  • apk search 查找所有可用软件包
  • apk search -v 所以可用软件包及其描述内容
  • apk search -v ‘nginx’ 通过软件包名称查找软件包
  • apk search -v -d ‘nginx’ 通过描述文件查找特定的软件包

2.4 安装软件包

  • apk add –no-cache nginx

2.5 卸载并删除软件包

  • apk del nginx

0x03 OpenRC init 系统

在类 Unix 系统上,OpenRC是一个基于依赖的init。由于 0.25 OpenRC包含openrc-init,它可以替换/ sbin/init,但init程序的默认提供程序是SysVinit for OpenRC。与 Linux 一样,OpenRC 也可用于多个 BSD 系统。

OpenRC 是TrueOS,Gentoo,Alpine Linux,Parabola GNU / Linux-libre,Artix Linux和其他类似 unix 系统的默认初始化系统,而其他一些像 Devuan 则提供它作为选项

3.1 openrc 的安装

apk add --no-cache openrc

3.2 rc-update - 不同运行级增加或者删除服务

rc-update add nginx 增加一个服务
rc-update del nginx 删除一个服务

3.3 rc-status - 运行级的状态管理

rc-status  查看默认运行级别的状态
rc-status -a 查看所有运行级别的状态

3.4 rc-service - 管理服务的状态

rc-service nginx start 启动一个服务
rc-service nginx stop  停止一个服务
rc-service nginx restart  重启一个服务

3.5 openrc - 管理不同的运行级

Alpine Linux可用的运行级

  • default

  • sysinit

  • boot

  • single

  • reboot

  • shutdown

3.5 关机重启指令 - 在容器中试了好像没反应

  • reboot 重启系统,类似于 shutdown -r now。
  • halt 关机,类似于 shutdown -h now。
  • poweroff 关机

0x04 安装 nginx

4.1 安装 nginx 软件并更新

  • apk –update add –no-cache nginx

4.2 启动 nginx(二选一执行)

  • /etc/init.d/nginx start
  • rc-service nginx start

4.3 将 nginx 添加到启动服务中,下次开机自动运行

  • rc-update add nginx

4.4 测试