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特点:
WeiyiGeek.镜像大小
Alpine应用:
注意事项:
musl libc
而不是正统的 glibc
,另外对于一些依赖 glibc 的大型项目,像 openjdk 、tomcat、rabbitmq
等都不建议使用 alpine 基础镜像,因为 musl libc 可能会导致 jvm 一些奇怪的问题
, 这也是为什么 tomcat 官方没有给出基础镜像是 alpine 的 Dockerfile 的原因。1.网络相关文件 网络相关的文档,详细参见:https://wiki.alpinelinux.org/wiki/Configure_Networking
#主机名文件
/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/
#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://mirrors.ustc.edu.cn/alpine/v3.8/main" > /etc/apk/repositories
echo "http://mirrors.ustc.edu.cn/alpine/v3.8/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服务
#安装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/
Alpine Linux 在 Proxy 环境下如何通过网络进行通信?
描述: 在我们的alpine没有办法链接外网时而我们又需要使用apk进行更新仓库索引和下载工具, 此时我们可通过代理方式进行连接到局域网中可以上网和搭建有例如squid
代理上网的服务。
# Alpine 代理设置
proxy_user=weiyigeek
proxy_pass=password
proxy_host=proxy.weiyigeek.top
proxy_port=3128
export http_proxy=http://${proxy_user}:${proxy_pass}@${proxy_host}:${proxy_port}
export https_proxy=${http_proxy}
export no_proxy=127.0.0.1,localhost
# 备份apk仓库文件以及更新仓库索引
cp /etc/apk/repositories /etc/apk/repositories.bak
echo "http://mirrors.ustc.edu.cn/alpine/v3.8/main" > /etc/apk/repositories
echo "http://mirrors.ustc.edu.cn/alpine/v3.8/community">> /etc/apk/repositories
apk update
apk add tcpdump
FROM alpine:latest
ARG proxy_host="proxy.weiyigeek.top"
ARG proxy_port="8080"
ARG proxy_user="username"
ARG proxy_pass="password"
ENV http_proxy http://${proxy_user}:${proxy_pass}@${proxy_host}:${proxy_port}
ENV https_proxy ${http_proxy}
ENV no_proxy 127.0.0.1,localhost
RUN apk update