參考:http://wiki.alpinelinux.org/wiki/Alpine_Linux_package_management
- 背景
- Alpine簡(jiǎn)介
- Alpine常用命令
- alpine包管理舉例
- alpine私有倉(cāng)庫(kù)搭建
- Dockerfile用例
- 其他
背景
最近在公司制作鏡像時(shí),因保密問(wèn)題,必須在內(nèi)網(wǎng)完成,操作十分不方便,最開(kāi)始只能在外網(wǎng)做好基礎(chǔ)鏡像之后,在通過(guò)文件中專站拷貝到內(nèi)網(wǎng),如果有問(wèn)題再重新在外網(wǎng)制作,然后再轉(zhuǎn)回內(nèi)網(wǎng),如此反復(fù);另外在這個(gè)過(guò)程中遇到各種問(wèn)題,下面列舉出來(lái)然后各個(gè)擊破,第一次寫(xiě)博文,不當(dāng)之處請(qǐng)見(jiàn)諒
- 對(duì)apline的理解有誤
- 安裝某個(gè)工具時(shí),通常會(huì)無(wú)法運(yùn)行
- 使用系統(tǒng)默認(rèn)的包安裝源通常在內(nèi)網(wǎng)無(wú)法正常工作
Alpine簡(jiǎn)介
Alpine Linux is a security-oriented, lightweight Linux distribution based on musl libc and busybox.
上面是官網(wǎng)給Alpine的一個(gè)定義,Alpine是一個(gè)只有5M大小的基礎(chǔ)鏡像,非常適合做對(duì)資源要求比較嚴(yán)苛的鏡像,<a > Alpine Linux Docker</a>鏡像基于<a >Alpine Linux</a>操作系統(tǒng),后者是一個(gè)面向安全的輕型Linux發(fā)行版。不同于通常Linux發(fā)行版,Alpine Linux采用了musl libc和busybox以減小系統(tǒng)的體積和運(yùn)行時(shí)資源消耗。在保持瘦身的同時(shí),Alpine Linux還提供了自己的包管理工具apk,可以在其網(wǎng)站上查詢,或者直接通過(guò)apk命令查詢和安裝。
Alpine常用命令
- add 向運(yùn)行中的系統(tǒng)添加包
- del 刪除運(yùn)行中系統(tǒng)的包
- fix 嘗試修復(fù)或者升級(jí)已安裝的包
- update 更新可用包的索引
- info 打印出已安裝的包或者可用的安裝包
- search 通過(guò)通配符搜索包或者描述
- upgrade 升級(jí)當(dāng)前已安裝的包
- cache 維護(hù)本地緩存的包倉(cāng)庫(kù)
- version 對(duì)比已安裝和可用的包之間的不同之處
- index 從包列表創(chuàng)建倉(cāng)庫(kù)的索引
- fetch 下載但不安裝包
- audit 從原始包安裝狀態(tài)向文件系統(tǒng)列表更改
- verify 驗(yàn)證包簽名
alpine包管理舉例
- 添加安裝包
# 安裝docker包
apk add docker
# 指定安裝源
apk add -update-cache --repository http://dl-3.alpinelinux.org/alpine/edge/testing/ --allow-untrusted
- 刪除安裝包
# 刪除docker包
apk del docker
- 升級(jí)包
#升級(jí)單個(gè)包
apk update && apk add --upgrade busybox
# 升級(jí)整個(gè)系統(tǒng)
apk update && apk upgrade
- 搜索安裝包
#列出所有包含通配符abd可用的包,以及它們的描述
apk search -v 'abd'
- 列出已安裝包
#列出所有包含通配符abd可用的包,以及它們的描述
apk info -a zlib
搭建alpine私有倉(cāng)庫(kù)
從官方拉取alpine所有的包
wget -r -np -nH http://nl.alpinelinux.org/alpine/v3.5/main/x86_64/
wget -r -np -nH http://nl.alpinelinux.org/alpine/v3.5/community/x86_64/下載后把源放到nginx的web目錄下,直接可以訪問(wèn),路徑類似下面
http://your_host_ip/alpine/v3.5/main/x86_64/
Dockerfile舉例
FROM alpine:3.5
MAINTAINER XXX XX@sina.com
#解決內(nèi)網(wǎng)無(wú)法正常使用倉(cāng)庫(kù)的問(wèn)題
RUN echo "https://your_host_ip/alpine/v3.5/main" /etc/apk/repositories \
&& echo "https://your_host_ip/alpine/v3.5/community" >> /etc/apk/repositories
#更新并升級(jí)包列表
RUN apk update
#升級(jí)整個(gè)系統(tǒng)的所有包
RUN apk upgrade
#從源安裝最小鏡像所需的包
RUN apk add docker openjdk8-jre-base
#從本地添加安裝包安裝包
ADD file.apk /path/to/file.apk
#--allow-untrusted 本地安裝文件可以放寬認(rèn)證
RUN apk add --allow-untrusted /path/to/file.apk
# 安裝多個(gè)本地包
apk add --allow-untrusted /var/tig-2.2-r0.apk /var/git-2.11.1-20.apk
其他
通常建議搭建最好安裝一些常用的包,比如g++, gcc,在制作一個(gè)自動(dòng)部署工具的鏡像時(shí),運(yùn)行環(huán)境已經(jīng)能正常運(yùn)行,但是始終報(bào)錯(cuò)找不到文件,后面發(fā)現(xiàn)是少了g++,安裝好之后,程序才能正常運(yùn)行