前言
Alpine是一個面向安全的輕量級的Linux發(fā)行版晾捏,相比與CentOS店茶,ubuntu體積小很多鲫咽,大約只有5M左右,由于體積小的原因溃斋,在很多場景下都會使用它來按需制作一些輕量級鏡像界拦,雖然體積小但它也有著自己的包管理工具apk來安裝需要的軟件,類似于CentOS中的yum、ubuntu中的apt-get
Alpine使用的c庫是使用mini版的musl libc與其他Linux發(fā)行版使用的gnu libc不一樣梗劫。雖說號稱兼容享甸,但也只是部分兼容了,缺啥補啥就是梳侨,通過一個軟鏈接來關(guān)聯(lián)蛉威。
注意:終究不是正統(tǒng)的glibc,對于一些強依賴glibc的系統(tǒng)建議不要使用Alpine走哺,比如使用了Oracle JDK的系統(tǒng)瓷翻,建議在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
鏡像源
一般這種需要從公網(wǎng)拉取鏡像的都需要設(shè)置鏡像源,因為默認(rèn)鏡像源在國外妒牙,下載會比較慢彼哼。比較出名的有清華大學(xué)源 、中科大源湘今、阿里云源等
清華大學(xué)的很多源不僅是apk源敢朱,都可以在下面鏈接中查找
https://mirror.tuna.tsinghua.edu.cn/help
# 清華大學(xué)源
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基礎(chǔ)命令
/ # apk -h
apk-tools 2.12.7, compiled for x86_64.
usage: apk [<OPTIONS>...] COMMAND [<ARGUMENTS>...]
Package installation and removal:
add Add packages to WORLD and commit changes
del Remove packages from WORLD and commit changes
System maintenance:
fix Fix, reinstall or upgrade packages without modifying WORLD
update Update repository indexes
upgrade Install upgrades available from repositories
cache Manage the local package cache
Querying package information:
info Give detailed information about packages or repositories
list List packages matching a pattern or other criteria
dot Render dependencies as graphviz graphs
policy Show repository policy for packages
search Search for packages by name or description
Repository maintenance:
index Create repository index file from packages
fetch Download packages from global repositories to a local directory
manifest Show checksums of package contents
verify Verify package integrity and signature
Miscellaneous:
audit Audit system for changes
stats Show statistics about repositories and installations
version Compare package versions or perform tests on version strings
This apk has coffee making abilities.
For more information: man 8 apk
我們常用的命令如下
apk add 安裝軟件
apk del 刪除軟件
apk upgrade 升級軟件
apk info 列出已安裝的軟件信息
apk search 通過名字或描述搜索有沒有改軟件
apk fetch 從倉庫下載軟件到本地目錄拴签,下載下來的是.apk包
真正使用時還會有一些額外的參數(shù)可以設(shè)置大家可以通過 --help查看 如 apk add -h
常用的額外參數(shù)如下
# 全局參數(shù)
--no-cache 不使用本地緩存
--no-network 不使用公網(wǎng)操作
# add
-l 總是選擇latest版本
-u 升級包以及它依賴的包
--no-chown 不改變包原來的owner or group
# del
-r 遞歸刪除依賴
# fetch
-o 下載的包保存到指定目錄
-R 同時下載依賴
# info
-d 顯示描述信息
-R 顯示依賴包
-s 顯示大小
使用
時區(qū)
UTC 國際協(xié)調(diào)時間,默認(rèn)時間 0時區(qū)
GMT 格林威治時間 0時區(qū)
CST 美國旗们、澳大利亞蚓哩、古巴或中國的標(biāo)準(zhǔn)時間 顯然我們應(yīng)該使用CST,通常使用Shanghai時區(qū) +8
查看當(dāng)前時區(qū)
/ # date
Tue Dec 6 08:07:55 UTC 2022
安裝時區(qū)
/ # apk add tzdata
(1/1) Installing tzdata (2022f-r1)
Executing busybox-1.34.1-r3.trigger
OK: 9 MiB in 15 packages
## 多了一個zoneinfo目錄,里面有各種時區(qū)
/ # ls -ld /usr/share/zoneinfo/
drwxr-xr-x 19 root root 4096 Dec 6 08:13 /usr/share/zoneinfo/
## 使用上海時區(qū)
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo "Asia/Shanghai" /etc/timezone
## 再次查看當(dāng)前時區(qū)
/ # date
Tue Dec 6 16:21:08 CST 2022
/ # date -R
Tue, 06 Dec 2022 16:21:15 +0800
下載軟件
通常公司的環(huán)境是不連外網(wǎng)的上渴,如果缺少包可以在外網(wǎng)通過apk fetch 將對應(yīng)apk包及其依賴下載下來岸梨,然后上傳至公司環(huán)境,然后通過apk add xx.apk即可安裝稠氮,下面通過下載tzdata演示
## 創(chuàng)建文件夾
~ # 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
## 時間已經(jīng)變?yōu)?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
## 時間已經(jīng)變回來曹阔,因為之前的軟連接沒刪,安裝后自動軟鏈了
~/tzdata # date
Tue Dec 6 16:45:34 CST 2022
Alpine的簡單介紹與apk命令的基本使用就介紹到這里了隔披,后面介紹Alpine中會碰到的一些問題赃份。
歡迎關(guān)注,學(xué)習(xí)不迷路奢米!