[TOC]

0x00 快速入门

Alpine 的意思是“高山的”,比如 Alpine plants高山植物,Alpine skiing高山滑雪、the alpine resort阿尔卑斯山胜地。

Alpine linux 它是基于 uClibc 和 Busybox 开发的目的是以减小系统的体积和运行时资源消耗,在保持瘦身的同时Alpine Linux还提供了自己的包管理工具apk,可以在其网站上查询或者直接通过apk命令查询和安装。

官网:https://wiki.alpinelinux.org/wiki/Alpine_Linux_package_management
软件包搜寻:https://pkgs.alpinelinux.org/packages

Alpine特点

  • 小巧:基于Musl libc和busybox和busybox一样小巧最小的Docker镜像只有5MB
  • 安全:面向安全应用的轻量级Linux发行版
  • 简单:提供APK包管理工具,软件的搜索、安装、删除、升级都非常方便。
WeiyiGeek.镜像大小

WeiyiGeek.镜像大小


Alpine应用:

  • 适合容器使用:由于小巧、功能完备,非常适合作为容器的基础镜像,Alpine Linux Docker镜像基于Alpine Linux操作系统
  • 适合用来做Docker镜像、路由器、防火墙、VoIP 盒子 以及服务器的操作系统



Alpine安装:
alpine Linux是一个完整的操作系统,像其他操作系统一样可以将Alpine安装到本地硬盘中
安装过程:http://blog.csdn.net/csdn_duomaomao/article/details/76053229


注意事项

  • 因为 Alpine 和 Ubuntu 不是一个社区进行维护,所以软件包很多名称是不同的,这里我直接提供我已经查找修改完毕的镜像文件。
  • alpine 的 c 库是 musl libc 而不是正统的 glibc ,另外对于一些依赖 glibc 的大型项目,像 openjdk 、tomcat、rabbitmq 等都不建议使用 alpine 基础镜像,因为 musl libc 可能会导致 jvm 一些奇怪的问题, 这也是为什么 tomcat 官方没有给出基础镜像是 alpine 的 Dockerfile 的原因。

0x01 Alpine的配置和使用

1.网络相关文件
网络相关的文档,详细参见:https://wiki.alpinelinux.org/wiki/Configure_Networking

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#主机名文件
/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


2.软件源配置
官方镜像源:https://mirrors.alpinelinux.org/
清华TUNA镜像源:https://mirror.tuna.tsinghua.edu.cn/alpine/
中科大镜像源:http://mirrors.ustc.edu.cn/alpine/
阿里云镜像源:http://mirrors.aliyun.com/alpine/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#Step1.更改源
$ vi /etc/apk/repositories
# /media/cdrom/apks
echo "http://mirrors.ustc.edu.cn/alpine/v3.10/main" > /etc/apk/repositories
echo "http://mirrors.ustc.edu.cn/alpine/v3.10/community">> /etc/apk/repositories

echo "http://dl-4.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories

#2.更新与安装源
#alpine 提供了非常好用的apk软件包管理工具,

apk search openssh #查询openssh相关的软件包
apk update #更新最新本地镜像源

apk add [software] #安装软件
apk add php7 --repository http://nl.alpinelinux.org/alpine/edge/testing/

apk info [exsit_software] #显示已安装的软件

#drill 命令可以替代dig和nslookup DNS查询命令
apk add drill

注意: Alpine中软件安装包的名字可能会与其他发行版有所不同,可以在 https://pkgs.alpinelinux.org/packages 网站搜索并确定安装包的名称


3.开启SSH服务

1
2
3
4
5
6
7
8
9
10
11
12
#安装openssh-server服务器
apk add openssh-server

#修改配置文件 /etc/ssh/sshd_config,
#如果要想使用root用户远程管理,需要修改参数为:
PermitRootLogin yes

#将ssh服务配置为开机自动启动
rc-update add sshd

#如果你想立刻生效,可以执行命令:
/etc/init.d/sshd restart

注意事项:
因为Alpine采用的是musl libc不是通常用的glibc,在使用DNS时Alpine(musl libc)在DNS解析文件/etc/resolv.conf中,不使用domain或search选项。
在使用DNS作为服务发现时要查看相应的文档来解决相关链接:http://gliderlabs.viewdocs.io/docker-alpine/caveats/