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