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是一个非常简单的发行版,它会尽量避免使用。它使用自己的包管理器名为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 //列出系统所有服务
#安装openssh-server服务器
apk add openssh-server
#修改配置文件 /etc/ssh/sshd_config,
#如果要想使用root用户远程管理,需要修改参数为:
PermitRootLogin yes
#将ssh服务配置为开机自动启动
rc-update add sshd
#如果你想立刻生效,可以执行命令:
/etc/init.d/sshd restart
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