Alpine:LinuxOS系统简介及使用方法电脑软件服务器系统

savh 142

简介

Alpine Linux是创始于2010年4月及以前的、一款开源社区开发的、基于musl libc和BusyBox的轻量级Linux发行版;适合用来做路由器、防火墙、VPNs、VoIP 盒子以及服务器的操作系统。Alpine 的意思是“高山的”。

Alpine Linux 围绕 musl libc 和 busybox 构建。这使得它比传统的 GNU/Linux 发行版更小,更节省资源。

一个容器只需不超过 8 MB 的空间。而在磁盘中的最小安装仅要大约 130 MB 的存储空间。

尽管体积很小,Apline 提供了完整的 Linux 环境,其存储库中还包含了大量的软件包备选。

除此之外,Alpine 还对软件包进行了缩减和拆分,以使用户能够对安装内容有更精确的控制,进一步帮助减少安装体积并提高效率。

它专注于安全、简单和高效,以最小化系统资源消耗和攻击面。

Alpine Linux 在设计时注重安全性。

内核采用了一个非官方的 grsecurity/PaX 移植版本(3.8 版本已终止对 grsecuiry 移植版本的支持),并且所有用户空间的二进制文件被编译为位置独立可执行文件(Position Independent Executables)并启用堆栈粉碎保护。

这些积极的安全功能可有效防止某些种类的 0-day 攻击。

Alpine Linux采用apk包管理器,使软件安装和更新变得简单和快速。

Alpine Linux 设计清晰而简练。它采用自有的名为 apk 的包管理器,以 OpenRC 作为初始化(init)系统,安装由脚本驱动。其提供的 Linux 环境简单、清晰且没有任何「噪音」。然后,用户可以基于此添加项目所需的软件包。因此,在各种应用场景下,Alpine 的设计都不会为用户带来麻烦。

它也可以作为容器镜像的基础操作系统。因为它的镜像非常小,这使得它适合于云原生应用和微服务架构。

由于其小巧、安全、简单以及功能完备的特点,被广泛应用于众多Docker容器中。

我司目前使用的基础镜像均是基于该系统;

dockerhub上有提供各种语言的基础镜像.如:node:8-alpine、python:3.6-alpine,同时也可以基于alpine镜像制作符合自己需求的基础镜像。

官方地址:https://www.alpinelinux.org

知识库:https://wiki.alpinelinux.org/wiki/Main_Page

版本

STANDARD:最小的可启动镜像,需要网络才能安装。

EXTENDED:包括最常用的软件包。适用于路由器和服务器。从RAM运行。扩展版本,带有更多软件包。

NETBOOT:netboot的内核、initramfs和modloop。

MINI ROOT FILESYSTEM:最小系统版本,仅包含内核,只用于构建Docker镜像。

VIRTUAL:与STANDARD类似,但更小,更适合虚拟系统使用。

XEN:内置XEN Hypervisor支持。

RASPBERRY PI:带有树莓派内核的版本。

GENERIC ARM:带有ARM内核,带有uboot加载器。

2010年04月09日,Alpine Linux 1.9.0 发布。
2010年11月03日,Alpine Linux 2.1.0 发布。
    变化:这是一个稳定版本基于Linux 2.6.35。一些比较有趣的软件更新包括gcc 4 5 1,gdb - 7.2,perl - 5.12等。
    最初支持PHP /请添加。最初的支持增加了对udev替代busybox mdev,这意味着hotplugging工作在xorg。
2011年05月04日,Alpine Linux 2.2.0 发布。
2016年01月06日,Alpine Linux 3.3.1 发布。
2019年06月26日,Alpine Linux 3.8.0 发布,其属于 3.8 稳定系列。
源/镜像

官方镜像源列表

http://dl-cdn.alpinelinux.org/alpine/MIRRORS.txt

MIRRORS.txt中是当前Alpine官方提供的镜像源(Alpine安装的时候系统自动选择最佳镜像源)

清华大学:https://mirror.tuna.tsinghua.edu.cn/alpine/

中国科技大学:http://mirrors.ustc.edu.cn/alpine/

阿里云:https://mirrors.aliyun.com/alpine

网易:https://mirrors.163.com/alpine/

以配置阿里云镜像源为例:
        a. 编辑 /etc/apk/repositories
        b. 将里面 dl-cdn.alpinelinux.org 的 改成 mirrors.aliyun.com ; 保存退出即可

sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
实践应用

1 安装部署

1.1 基于Alpine Linux与JDK的Docker微服务

示例1:

reference-doc,alpine - Official Image | Docker Hub

Use like you would any other base image

FROM alpine:3.14
RUN apk add --no-cache mysql-client
ENTRYPOINT ["mysql"]

docker安装:

docker pull alpine:latest

示例2:
    微服务的 Dockerfile

# 启用自定义 Dockerfile  
# 更换 Java 运行环境: 由 JRE 换为 JDK  
# FROM alpine:3.17  
# RUN echo -e http://mirrors.ustc.edu.cn/alpine/v3.17/main/ > /etc/apk/repositories  
FROM artifactory.xxxx.cn/docker-remote/eclipse-temurin:8-jdk-alpine  
  
COPY target/app.jar .  
  
# aliyun  
#RUN sed -i 's#http[s]*://[^/]*#http://mirrors.aliyun.com#g' /etc/apk/repositories \  
#  && echo 'http://mirrors.aliyun.com/alpine/edge/testing' >> /etc/apk/repositories \  
#  && apk update \  
#  && apk add fontconfig freetype font-dejavu-sans-mono-nerd libgcc libstdc++ \  
#  && apk add --no-cache --virtual .tzdata tzdata \  
#  && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \  
#  && echo "Asia/Shanghai" > /etc/timezone \  
#  && apk del --no-network .tzdata \  
#  rm -rf /usr/local/*.apk /tmp/* /var/cache/apk/*  
  
# huawei-cloud https://mirrors.huaweicloud.com/home --> Alpine镜像[SDK]  
# 创建目录的原因 `mkdir -p /tmp/springboot-xxx-app` : 在每个镜像(环境)下都会创建本目录,但目前仅用于压测环境传输出特定文件至OSS而使用(参见 pt.yaml 相关配置)  
RUN sed -i "s#http[s]*://[^/]*#https://repo.huaweicloud.com#g" /etc/apk/repositories \  
  && echo 'https://repo.huaweicloud.com/alpine/edge/testing' >> /etc/apk/repositories \  
  && apk update \  
  && apk add curl \  
  && apk add fontconfig freetype font-dejavu-sans-mono-nerd libgcc libstdc++ \  
  && apk add --no-cache --virtual .tzdata tzdata \  
  && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \  
  && echo "Asia/Shanghai" > /etc/timezone \  
  && apk del --no-network .tzdata \  
  && rm -rf /usr/local/*.apk /tmp/* /var/cache/apk/* \  
  && mkdir -p /tmp/springboot-xxx-app
  
  
#RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \  
#    && echo "Asia/Shanghai" > /etc/timezone  
  
# 内存溢出时,生成 dump 日志  
ENV JAVA_OPTS $JAVA_OPTS -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintCommandLineFlags -XX:HeapDumpPath=/logs/dump.log  -XX:+PrintGCDetails -XX:-OmitStackTraceInFastThrow  
# 限制、分配应用程序的内存 ( -Xmx 堆区的的最大内存, -Xms 堆区初始大小, -Xmn (堆区)新生代大小, -XX:MaxMetaspaceSize 元空间的最大值 )  
## ENV JAVA_OPTS $JAVA_OPTS -server -Xmn256m -Xms512m -Xmx512m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m  
  
#-XX:+HeapDumpOnOutOfMemoryError -XX:+PrintCommandLineFlags -XX:HeapDumpPath=/logs/dump.log  -XX:+PrintGCDetails -XX:-OmitStackTraceInFastThrow  
#-server -Xmn256m -Xms512m -Xmx512m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m  
ENTRYPOINT exec java -server ${JAVA_OPTS:-} -jar app.jar
# 查看内核
cat /etc/os-release
如何安装:

如何在我的电脑上安装Alpine Linux?

    从Alpine Linux的官方网站上下载适合您计算机架构的ISO映像文件。

    将ISO映像文件刻录到DVD或USB驱动器上。

    将DVD或USB驱动器插入您的计算机,并重启计算机。

    在计算机启动时,按下相应的键进入BIOS设置,以便从DVD或USB驱动器启动计算机。

    选择“Install”选项来开始安装过程。

    在安装向导中,选择语言、时区和键盘布局等设置。

    分区您的硬盘并选择安装位置。

    设置root用户密码和其他用户账户。

    选择要安装的软件包并确认安装。

    安装完成后,重启计算机并移除DVD或USB驱动器。

    登录到Alpine Linux系统并开始使用。

APK包管理器

Alpine Linux自带的apk包管理器十分好用,而且软件包更新速度很快,一般search和add两个命令就能搞定软件包依赖问题

# 查询软件包 / 搜索可用软件包,搜索之前最好先更新镜像源
apk search wget
apk search                 # 查找所有可用软件包
apk search -v              # 查找所用可用软件包及其描述内容
apk search -v '包名'       # 通过软件包名称查找软件包
apk search -v -d 'docker'  # 通过描述文件查找特定的软件包
# 安装软件
apk add 从仓库中安装最新软件包,并自动安装必须的依赖包,也可以从第三方仓库添加软件包 
    --no-cache 不使用本地镜像源缓存,相当于先执行update,再执行add 
    -U 下载该包的最新版本
    
apk add  wget
apk add openssh                       # 安装一个软件
apk add openssh  vim  bash nginx      # 安装多个软件
apk add --no-cache mysql-client       # 不使用本地镜像源缓存,相当于先执行update,再执行add
# 查看软件信息
apk info           # 列出所有已安装的软件包
apk info -a zlib   # 显示完整的软件包信息
apk info --who-owns /usr/sbin/nginx # 显示指定文件属于的包
# 升级软件
apk upgrade            # 升级所有软件
apk upgrade openssh    # 升级指定软件
apk upgrade openssh  vim  bash nginx # 升级多个软件
apk add --upgrade busybox  # 指定升级部分软件包
# 删除已安装的软件
apk del  wget
apk del openssh     # 删除一个软件 
apk del nginx mysql # 删除多个软件
# 更新软件包索引文件 / 更新最新镜像源列表
apk update
# 获取更多apk包管理的命令参数
apk --help
Alpine服务管理

Alpine服务管理官方文档:https://wiki.alpinelinux.org/wiki/OpenRC

Alpine Linux使用OenRC作为其初始化系统

rc-update      # 主要用于不同运行级增加或者删除服务
    add <service> <runlevel> 
    del <service> <runlevel>
rc-service     # 主用于管理服务的状态
    <service> <start stop restart>
    
rc-status      # 要检查服务及其设置的运行级别
rc <runlevel>  # 更改运行级别
    可用运行级别:
        default        #未指定时则默认该级别
        hotplugged
        manual
    特殊运行级别:具体参考上方的官方文档,这里不多做解释。
应用场景

如何在Alpine Linux上配置网络设置?

    打开终端并以root用户身份登录。

    输入以下命令来编辑网络配置文件:

vi /etc/network/interfaces

在文件中添加以下内容:

auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp

这将启用本地环回接口和以DHCP方式配置eth0网络接口。

如果您的网络需要其他配置,请将上述内容替换为您的网络设置。
    保存并退出编辑器。
    重启网络服务以使更改生效:

/etc/init.d/networking restart

检查网络连接是否正常:
ping google.com 如果能够ping通,则说明网络连接正常。

如何在Alpine Linux上安装Python环境?

    打开终端并以root用户身份登录。

    输入以下命令来安装Python和pip包管理器:

apk add python3 py3-pip

等待安装完成后,输入以下命令来确认Python已经安装成功:

python3 --version

如果能够正确显示Python的版本号,则说明Python已经成功安装。

(可选)如果您希望安装特定的Python包或库,可以使用pip命令来进行安装。例如,要安装numpy库,可以输入以下命令:

pip install numpy

这将安装最新版本的numpy库。

如何在Alpine Linux上安装和使用Docker?

打开终端并以root用户身份登录。
    添加Docker官方GPG密钥:

apk add docker

安装Docker:

apk add docker

启动Docker服务:

rc-update add docker boot service docker start

确认Docker已正确安装和运行:

docker info

如果您希望使用非root用户来运行Docker容器,则需要将该用户添加到docker组:

adduser username docker

其中,username是您要添加到docker组的用户名。

退出终端并重新登录以使更改生效。

现在已经成功在Alpine Linux上安装并配置了Docker。可以使用Docker命令来搜索、下载和运行Docker容器镜像。例如,要搜索可用的Docker镜像,可以输入以下命令:

docker search [镜像名称]

其中,[镜像名称]是要搜索的Docker镜像的名称。

要下载和运行Docker镜像,可以使用以下命令:

docker run [选项] [镜像名称]

其中,[选项]是可选的运行参数,[镜像名称]是您要下载和运行的Docker镜像的名称。


http://www.savh.cn/thread-1627.htm
转载请注明:Savh.Cn 发表

推荐阅读
最新动态 (0)

    ( 登录 ) 后,可以发表评论!

    返回