alpine系统
简介
Alpine 操作系统是一个面向安全的轻型 Linux 发行版。它不同于通常 Linux 发行版,Alpine 采用了 musl libc 和 busybox 以减小系统的体积和运行时资源消耗,但功能上比 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 做为基础镜像环境。这样会带来多个好处。包括镜像下载速度加快,镜像安全性提高,主机之间的切换更方便,占用更少磁盘空间等。
下表是官方镜像的大小比较:
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
特点
- 小巧
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)。这些主动安全功能可防止利用整个类的零日漏洞和其他漏洞。
相关资料
更新apk源:
echo "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.8/main/" > /etc/apk/repositories //清华大学源
echo "https://mirrors.ustc.edu.cn/alpine/v3.8/main/" > /etc/apk/repositories //中科大源
echo "http://mirrors.aliyun.com/alpine/v3.8/main/" > /etc/apk/repositories //阿里云源
常用命令
apk update //更新最新镜像源列表
apk search //查找所以可用软件包
apk search -v //查找所以可用软件包及其描述内容
apk search -v ‘acf*’ //通过软件包名称查找软件包
apk search -v -d ‘docker’ //通过描述文件查找特定的软件包
apk add openssh //安装一个软件
apk add openssh openntp vim //安装多个软件
apk add --no-cache mysql-client //不使用本地镜像源缓存,相当于先执行update,再执行add
apk info //列出所有已安装的软件包
apk info -a zlib //显示完整的软件包信息
apk info --who-owns /sbin/lbu //显示指定文件属于的包
apk upgrade //升级所有软件
apk upgrade openssh //升级指定软件
apk upgrade openssh openntp vim //升级多个软件
apk add --upgrade busybox //指定升级部分软件包
apk del openssh //删除一个软件
服务管理
alpine没有使用fedora的systemctl来进行服务管理,使用的是RC系列命令:
rc-update //主要用于不同运行级增加或者删除服务
rc-status //主要用于运行级的状态管理
rc-service //主用于管理服务的状态
rc-status -a //列出系统所有服务
开启SSH服务
#安装openssh-server服务器
apk add openssh-server
#修改配置文件 /etc/ssh/sshd_config,
#如果要想使用root用户远程管理,需要修改参数为:
PermitRootLogin yes
#将ssh服务配置为开机自动启动
rc-update add sshd
#如果你想立刻生效,可以执行命令:
/etc/init.d/sshd restart
软件包管理工具apk的基本使用
alpine 提供了非常好用的apk软件包管理工具,
可以方便地安装、删除、更新软件。
#查询openssh相关的软件包
apk search openssh
#安装一个软件包
apk add xxx
#删除已安装的xxx软件包
apk del xxx
#获取更多apk包管理的命令参数
apk --help
#比如安装常用的网络相关工具:
#更新软件包索引文件
apk update
#用于文本方式查看网页,用于测试http协议
apk add curl
#提供了查看网络连接的协议端口的命令ss,可以替代netstat命令
apk add iproute2
#drill 命令可以替代dig和nslookup DNS查询命令
apk add drill
#测试192.168.3.166的80端口,查看web服务是否能正常访问。
curl 192.168.3.166
#查看建立的TCP连接
ss -ta
#查询域名的信息
drill blog.csdn.net @8.8.8.8
#根据IP地址,反向查找域名
drill -x 8.8.8.8 @47.94.71.34
网络相关文件
#主机名文件
/etc/hostname
#使用新设置的主机名立刻生效,执行如下命令:
hostname -F /etc/hostname
#主机IP和域名映射文件
/etc/hosts
#文件内容为:
192.168.99.100 alpine.csdn.net
#DNS 服务器配置文件
/etc/resolv.conf
#文件内容为:
nameserver 218.2.135.1
nameserver 202.102.24.35
#网卡配置文件
/etc/network/interfaces
#文件内容为:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.3.166
netmask 255.255.255.0
gateway 192.168.3.254
#修改完相关配置以后,重新启动网络服务:
/etc/init.d/networking restart