參考:http://wiki.alpinelinux.org/wiki/Alpine_Linux_package_management
- 背景
- Alpine簡介
- Alpine常用命令
- alpine包管理舉例
- alpine私有倉庫搭建
- Dockerfile用例
- 其他
背景
最近在公司制作鏡像時敢茁,因保密問題,必須在內網(wǎng)完成留美,操作十分不方便彰檬,最開始只能在外網(wǎng)做好基礎鏡像之后伸刃,在通過文件中專站拷貝到內網(wǎng),如果有問題再重新在外網(wǎng)制作逢倍,然后再轉回內網(wǎng)捧颅,如此反復;另外在這個過程中遇到各種問題较雕,下面列舉出來然后各個擊破碉哑,第一次寫博文,不當之處請見諒
- 對apline的理解有誤
- 安裝某個工具時亮蒋,通常會無法運行
- 使用系統(tǒng)默認的包安裝源通常在內網(wǎng)無法正常工作
Alpine簡介
Alpine Linux is a security-oriented, lightweight Linux distribution based on musl libc and busybox.
上面是官網(wǎng)給Alpine的一個定義扣典,Alpine是一個只有5M大小的基礎鏡像,非常適合做對資源要求比較嚴苛的鏡像慎玖,<a > Alpine Linux Docker</a>鏡像基于<a >Alpine Linux</a>操作系統(tǒng)激捏,后者是一個面向安全的輕型Linux發(fā)行版。不同于通常Linux發(fā)行版凄吏,Alpine Linux采用了musl libc和busybox以減小系統(tǒng)的體積和運行時資源消耗远舅。在保持瘦身的同時,Alpine Linux還提供了自己的包管理工具apk痕钢,可以在其網(wǎng)站上查詢图柏,或者直接通過apk命令查詢和安裝。
Alpine常用命令
- add 向運行中的系統(tǒng)添加包
- del 刪除運行中系統(tǒng)的包
- fix 嘗試修復或者升級已安裝的包
- update 更新可用包的索引
- info 打印出已安裝的包或者可用的安裝包
- search 通過通配符搜索包或者描述
- upgrade 升級當前已安裝的包
- cache 維護本地緩存的包倉庫
- version 對比已安裝和可用的包之間的不同之處
- index 從包列表創(chuàng)建倉庫的索引
- fetch 下載但不安裝包
- audit 從原始包安裝狀態(tài)向文件系統(tǒng)列表更改
- verify 驗證包簽名
alpine包管理舉例
- 添加安裝包
# 安裝docker包
apk add docker
# 指定安裝源
apk add -update-cache --repository http://dl-3.alpinelinux.org/alpine/edge/testing/ --allow-untrusted
- 刪除安裝包
# 刪除docker包
apk del docker
- 升級包
#升級單個包
apk update && apk add --upgrade busybox
# 升級整個系統(tǒng)
apk update && apk upgrade
- 搜索安裝包
#列出所有包含通配符abd可用的包任连,以及它們的描述
apk search -v 'abd'
- 列出已安裝包
#列出所有包含通配符abd可用的包蚤吹,以及它們的描述
apk info -a zlib
搭建alpine私有倉庫
從官方拉取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目錄下,直接可以訪問随抠,路徑類似下面
http://your_host_ip/alpine/v3.5/main/x86_64/
Dockerfile舉例
FROM alpine:3.5
MAINTAINER XXX XX@sina.com
#解決內網(wǎng)無法正常使用倉庫的問題
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
#更新并升級包列表
RUN apk update
#升級整個系統(tǒng)的所有包
RUN apk upgrade
#從源安裝最小鏡像所需的包
RUN apk add docker openjdk8-jre-base
#從本地添加安裝包安裝包
ADD file.apk /path/to/file.apk
#--allow-untrusted 本地安裝文件可以放寬認證
RUN apk add --allow-untrusted /path/to/file.apk
# 安裝多個本地包
apk add --allow-untrusted /var/tig-2.2-r0.apk /var/git-2.11.1-20.apk
其他
通常建議搭建最好安裝一些常用的包裁着,比如g++, gcc,在制作一個自動部署工具的鏡像時拱她,運行環(huán)境已經(jīng)能正常運行二驰,但是始終報錯找不到文件,后面發(fā)現(xiàn)是少了g++秉沼,安裝好之后桶雀,程序才能正常運行