Alpine介绍与apk的基本使用
创始人
2024-03-24 02:10:26

前言

Alpine是一个面向安全的轻量级的Linux发行版,相比与CentOS,ubuntu体积小很多,大约只有5M左右,由于体积小的原因,在很多场景下都会使用它来按需制作一些轻量级镜像,虽然体积小但它也有着自己的包管理工具apk来安装需要的软件,类似于CentOS中的yum、ubuntu中的apt-get

Alpine使用的c库是使用mini版的musl libc与其他Linux发行版使用的gnu libc不一样。虽说号称兼容,但也只是部分兼容了,缺啥补啥就是,通过一个软链接来关联。

注意:终究不是正统的glibc,对于一些强依赖glibc的系统建议不要使用Alpine,比如使用了Oracle JDK的系统,建议在Alpine换成OpenJDK,很多强依赖于glibc的大型项目一般也不会提供基于Alpine的Dockerfile,比如tomcat

Alpine镜像

使用docker pull拉取

# 拉取
docker pull alpine:latest
# 查看镜像 大约只有5M
docker images|grep alpine
alpine   latest          c059bfaa849c   12 months ago   5.59MB

apk

镜像源

一般这种需要从公网拉取镜像的都需要设置镜像源,因为默认镜像源在国外,下载会比较慢。比较出名的有清华大学源 、中科大源、阿里云源等

清华大学的很多源不仅是apk源,都可以在下面链接中查找

https://mirror.tuna.tsinghua.edu.cn/help
# 清华大学源
sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories
# 阿里云源
sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
# 中科大源
sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
运行

Alpine为了精简体积是没有bash的,使用sh运行即可。

[root@node01 ~]# docker run -it --name=alpine alpine:latest /bin/sh
## 查看版本
/ # cat /etc/alpine-release 
3.15.0
apk基础命令
/ # apk -h
apk-tools 2.12.7, compiled for x86_64.usage: apk [...] COMMAND [...]Package installation and removal:add        Add packages to WORLD and commit changesdel        Remove packages from WORLD and commit changesSystem maintenance:fix        Fix, reinstall or upgrade packages without modifying WORLDupdate     Update repository indexesupgrade    Install upgrades available from repositoriescache      Manage the local package cacheQuerying package information:info       Give detailed information about packages or repositorieslist       List packages matching a pattern or other criteriadot        Render dependencies as graphviz graphspolicy     Show repository policy for packagessearch     Search for packages by name or descriptionRepository maintenance:index      Create repository index file from packagesfetch      Download packages from global repositories to a local directorymanifest   Show checksums of package contentsverify     Verify package integrity and signatureMiscellaneous:audit      Audit system for changesstats      Show statistics about repositories and installationsversion    Compare package versions or perform tests on version stringsThis apk has coffee making abilities.
For more information: man 8 apk

我们常用的命令如下

apk add 安装软件apk del 删除软件apk upgrade 升级软件apk info 列出已安装的软件信息apk search 通过名字或描述搜索有没有改软件apk fetch  从仓库下载软件到本地目录,下载下来的是.apk包

真正使用时还会有一些额外的参数可以设置大家可以通过 --help查看 如 apk add -h

常用的额外参数如下

# 全局参数
--no-cache 不使用本地缓存
--no-network 不使用公网操作# add
-l 总是选择latest版本
-u 升级包以及它依赖的包
--no-chown 不改变包原来的owner or group# del
-r 递归删除依赖# fetch
-o 下载的包保存到指定目录
-R 同时下载依赖# info
-d 显示描述信息
-R 显示依赖包
-s 显示大小
使用

时区

UTC 国际协调时间,默认时间 0时区
GMT 格林威治时间 0时区
CST 美国、澳大利亚、古巴或中国的标准时间 显然我们应该使用CST,通常使用Shanghai时区 +8

查看当前时区

/ # date
Tue Dec  6 08:07:55 UTC 2022

安装时区

/ # apk add tzdata
(1/1) Installing tzdata (2022f-r1)
Executing busybox-1.34.1-r3.trigger
OK: 9 MiB in 15 packages## 多了一个zoneinfo目录,里面有各种时区
/ # ls -ld /usr/share/zoneinfo/
drwxr-xr-x   19 root     root          4096 Dec  6 08:13 /usr/share/zoneinfo/## 使用上海时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo "Asia/Shanghai" /etc/timezone## 再次查看当前时区
/ # date
Tue Dec  6 16:21:08 CST 2022
/ # date -R
Tue, 06 Dec 2022 16:21:15 +0800

下载软件

通常公司的环境是不连外网的,如果缺少包可以在外网通过apk fetch 将对应apk包及其依赖下载下来,然后上传至公司环境,然后通过apk add xx.apk即可安装,下面通过下载tzdata演示

## 创建文件夹
~ # mkdir -p /root/tzdata## 下载tzdata及其依赖包到/root/tzdata目录
~ # apk fetch -R -o /root/tzdata tzdata
Downloading tzdata-2022f-r1
Downloading musl-1.2.2-r7## 查看/root/tzdata目录多了两个apk包 musl-1.2.2-r7.apk tzdata-2022f-r1.apk
~ # ls -l /root/tzdata/
total 812
-rw-r--r--    1 root     root        383152 Oct 18  2021 musl-1.2.2-r7.apk
-rw-r--r--    1 root     root        443978 Nov  6 19:34 tzdata-2022f-r1.apk## 删除安装好的tzdata及其依赖
~/tzdata # apk del -r tzdata
(1/1) Purging tzdata (2022f-r1)
Executing busybox-1.34.1-r3.trigger
OK: 6 MiB in 14 packages## 时间已经变为 UTC
~/tzdata # date
Tue Dec  6 08:43:31 UTC 2022## 安装/root/tzdata目录的.apk包
## ls |xargs -n 1 列出所有的包一个个add,对于依赖包比较多的时候方便
~/ cd /root/tzdata
~/tzdata # ls |xargs -n 1 |xargs apk add --no-network
(1/1) Installing tzdata (2022f-r1)
Executing busybox-1.34.1-r3.trigger
OK: 9 MiB in 15 packages## 时间已经变回来,因为之前的软连接没删,安装后自动软链了
~/tzdata # date
Tue Dec  6 16:45:34 CST 2022

Alpine的简单介绍与apk命令的基本使用就介绍到这里了,后面介绍Alpine中会碰到的一些问题。


欢迎关注,学习不迷路!

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...