用Alpine制作鏡像

參考: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)諒

  1. 對(duì)apline的理解有誤
  2. 安裝某個(gè)工具時(shí),通常會(huì)無(wú)法運(yùn)行
  3. 使用系統(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ù)

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)行

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容