0x00 前言
Alpine Linux 是一个面向安全的轻型的 Linux 发行版, 基于Alpine Linux
的超小型 Docker 镜像, 大小只有 5MB,并且可以访问比其他基于BusyBox
的镜像更完整的包存储库。 Alpine Linux
采用了 musl libc
和busybox
以减小系统的体积和运行时资源消耗,由于小巧、功能完备,非常适合用于作为容器的基础镜像。
Alpine Linux 有以下特点:
- 小巧
Alpine Linux 是围绕musl libc
和busybox
构建的。这使得它比传统的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 国内镜像源:
- 清华 TUNA 镜像源列表:https://mirror.tuna.tsinghua.edu.cn/alpine/MIRRORS.txt
- 中科大镜像源:http://mirrors.ustc.edu.cn/alpine/MIRRORS.txt
- 阿里云镜像源:http://mirrors.aliyun.com/alpine/MIRRORS.txt
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 测试
- curl http://127.0.0.1