文章目录
Alpine Linux 是一款独立的非商业性的通用 Linux 发行版,关注于安全性、简单性和资源效率。
Alpine Linux 围绕 musl libc 和 busybox 构建。这使得它比传统的 GNU/Linux 发行版更小,更节省资源。一个容器只需不超过 8 MB 的空间。而在磁盘中的最小安装仅要大约 130 MB 的存储空间。尽管体积很小,Apline 提供了完整的 Linux 环境,其存储库中还包含了大量的软件包备选。除此之外,Alpine 还对软件包进行了缩减和拆分,以使用户能够对安装内容有更精确的控制,进一步帮助减少安装体积并提高效率。
Alpine Linux 设计清晰而简练。它采用自有的名为 apk 的包管理器,以 OpenRC 作为初始化(init)系统,安装由脚本驱动。其提供的 Linux 环境简单、清晰且没有任何「噪音」。然后,用户可以基于此添加项目所需的软件包。因此,在各种应用场景下,Alpine 的设计都不会为用户带来麻烦。
Alpine Linux 在设计时注重安全性。内核采用了一个非官方的 grsecurity/PaX 移植版本(3.8 版本已终止对 grsecuiry 移植版本的支持),并且所有用户空间的二进制文件被编译为位置独立可执行文件(Position Independent Executables)并启用堆栈粉碎保护。这些积极的安全功能可有效防止某些种类的 0-day 攻击。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QbEAHd2G-1682653072306)(http://rtlu7upgi.hn-bkt.clouddn.com/alpine%20linux.jpg?e=1682653266&token=TXw_2Qjn886OXLWivBbd5FKMP6ut48HhZWxwO74U:S0DwS65Fa_SRkdSeG2-ZfzbBymE=)]
官网:https://www.alpinelinux.org/
特点:
1、小巧:基于musl libc 和 busybox,和 busybox一样小巧,最小的Docker镜像只有5MB。
2、安全:面向安全的轻量发行版
3、简单:提供APK包管理工具,软件的搜索、安装、删除、升级都非常方便。
4、适合容器使用:由于小巧、功能完备,非常适合作为容器的基础镜像。
不同版本:
STANDARD:最小的可启动镜像,需要网络才能安装。
EXTENDED:包括最常用的软件包。适用于路由器和服务器。从RAM运行。扩展版本,带有更多软件包。
NETBOOT:netboot的内核、initramfs和modloop。
MINI ROOT FILESYSTEM:最小系统版本,仅包含内核,只用于构建Docker镜像。
VIRTUAL:与STANDARD类似,但更小,更适合虚拟系统使用。
XEN:内置XEN Hypervisor支持。
RASPBERRY PI:带有树莓派内核的版本。
GENERIC ARM:带有ARM内核,带有uboot加载器*
国内镜像源
Alpine Linux自带的apk包管理器十分好用,而且软件包更新速度很快,一般search和add两个命令就能搞定软件包依赖问题
#查询openssh相关的软件包
localhost:~# apk search wget
#安装一个软件包
localhost:~# apk add wget
#删除已安装的xxx软件包
localhost:~# apk del wget
#获取更多apk包管理的命令参数
localhost:~# apk --help
#更新软件包索引文件
localhost:~# apk update
12345678910
apk update # 更新最新镜像源列表
1
apk search # 查找所有可用软件包
apk search -v # 查找所用可用软件包及其描述内容
apk search -v ‘包名’ # 通过软件包名称查找软件包
apk search -v -d ‘docker’ # 通过描述文件查找特定的软件包
1234
apk add openssh # 安装一个软件
apk add openssh vim bash nginx # 安装多个软件
apk add --no-cache mysql-client # 不使用本地镜像源缓存,相当于先执行update,再执行add
123
apk info # 列出所有已安装的软件包
apk info -a zlib # 显示完整的软件包信息
apk info --who-owns /usr/sbin/nginx # 显示指定文件属于的包
123
apk upgrade # 升级所有软件
apk upgrade openssh # 升级指定软件
apk upgrade openssh vim bash nginx # 升级多个软件
apk add --upgrade busybox # 指定升级部分软件包
1234
apk del openssh # 删除一个软件
apk del nginx mysql # 删除多个软件
指定升级部分软件包
123
apk del openssh # 删除一个软件
apk del nginx mysql # 删除多个软件
指定升级部分软件包
123
#### 3.7apk del
```bash
apk del openssh # 删除一个软件
apk del nginx mysql # 删除多个软件
电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。 准备工作: 1、U盘一个(尽量使用8G以上的U盘)。 2、一台正常联网可使用的电脑。 3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。 4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。 U盘启动盘制作步骤: 注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt
需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc
我有一个使用SeleniumWebdriver和Nokogiri的Ruby应用程序。我想选择一个类,然后对于那个类对应的每个div,我想根据div的内容执行一个Action。例如,我正在解析以下页面:https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=puppies这是一个搜索结果页面,我正在寻找描述中包含“Adoption”一词的第一个结果。因此机器人应该寻找带有className:"result"的div,对于每个检查它的.descriptiondiv是否包含单词“adoption
我正在我的Rails项目中安装Grape以构建RESTfulAPI。现在一些端点的操作需要身份验证,而另一些则不需要身份验证。例如,我有users端点,看起来像这样:moduleBackendmoduleV1classUsers现在如您所见,除了password/forget之外的所有操作都需要用户登录/验证。创建一个新的端点也没有意义,比如passwords并且只是删除password/forget从逻辑上讲,这个端点应该与用户资源。问题是Grapebefore过滤器没有像except,only这样的选项,我可以在其中说对某些操作应用过滤器。您通常如何干净利落地处理这种情况?
在我做的一些网络开发中,我有多个操作开始,比如对外部API的GET请求,我希望它们同时开始,因为一个不依赖另一个的结果。我希望事情能够在后台运行。我找到了concurrent-rubylibrary这似乎运作良好。通过将其混合到您创建的类中,该类的方法具有在后台线程上运行的异步版本。这导致我编写如下代码,其中FirstAsyncWorker和SecondAsyncWorker是我编写的类,我在其中混合了Concurrent::Async模块,并编写了一个名为“work”的方法来发送HTTP请求:defindexop1_result=FirstAsyncWorker.new.async.
因为我现在正在做一些时间测量,我想知道是否可以在不使用Benchmark类或命令行实用程序time的情况下测量用户时间或系统时间。使用Time类只显示挂钟时间,而不显示系统和用户时间,但是我正在寻找具有相同灵active的解决方案,例如time=TimeUtility.now#somecodeuser,system,real=TimeUtility.now-time原因是我有点不喜欢Benchmark,因为它不能只返回数字(编辑:我错了-它可以。请参阅下面的答案。)。当然,我可以解析输出,但感觉不对。*NIX系统的time实用程序也应该可以解决我的问题,但我想知道是否已经在Ruby中实
a=[3,4,7,8,3]b=[5,3,6,8,3]假设数组长度相同,是否有办法使用each或其他一些惯用方法从两个数组的每个元素中获取结果?不使用计数器?例如获取每个元素的乘积:[15,12,42,64,9](0..a.count-1).eachdo|i|太丑了...ruby1.9.3 最佳答案 使用Array.zip怎么样?:>>a=[3,4,7,8,3]=>[3,4,7,8,3]>>b=[5,3,6,8,3]=>[5,3,6,8,3]>>c=[]=>[]>>a.zip(b)do|i,j|c[[3,5],[4,3],[7,6],
我有一个非常简单的Controller来管理我的Rails应用程序中的静态页面:classPagesController我怎样才能让View模板返回它自己的名字,这样我就可以做这样的事情:#pricing.html.erb#-->"Pricing"感谢您的帮助。 最佳答案 4.3RoutingParametersTheparamshashwillalwayscontainthe:controllerand:actionkeys,butyoushouldusethemethodscontroller_nameandaction_nam
在Ruby中,以毫秒为单位获取自纪元(1970)以来的当前系统时间的正确方法是什么?我试过了Time.now.to_i,好像不是我想要的结果。我需要结果显示毫秒并且使用long类型,而不是float或double。 最佳答案 (Time.now.to_f*1000).to_iTime.now.to_f显示包含十进制数字的时间。要获得毫秒数,只需将时间乘以1000。 关于ruby-以毫秒为单位获取当前系统时间,我们在StackOverflow上找到一个类似的问题: