Alpine Linux是一個獨(dú)立的、非商業(yè)的、通用的Linux發(fā)行版,設(shè)計用于了解安全性、簡單性和資源效率的高級用戶。
Alpine Linux圍繞musl libc和busybox構(gòu)建。這使得它比傳統(tǒng)的GNU / Linux發(fā)行版更小,更節(jié)省資源。一個容器需要不超過8 MB的空間,而對磁盤的最小安裝需要大約130 MB的存儲空間。您不僅可以獲得完整的Linux環(huán)境,還可以從存儲庫中選擇大量的軟件包。
二進(jìn)制軟件包被縮減和拆分,使您可以更好地控制安裝的內(nèi)容,從而使您的環(huán)境盡可能地小巧高效。
Alpine Linux是一個非常簡單的發(fā)行版,它會盡量避免使用。它使用自己的包管理器,稱為apk,OpenRC init系統(tǒng),腳本驅(qū)動的設(shè)置,就是這樣!這為您提供了一個簡單,清晰的Linux環(huán)境,沒有任何噪音。然后,您可以添加項目所需的軟件包,因此無論是構(gòu)建家用PVR還是iSCSI存儲控制器,薄型郵件服務(wù)器容器或堅如磐石的嵌入式交換機(jī),其他都不會擋道。
Alpine Linux的設(shè)計考慮到了安全性。內(nèi)核修補(bǔ)了一個非官方的grsecurity / PaX端口,并且所有的用戶級二進(jìn)制文件被編譯為位置獨(dú)立可執(zhí)行文件(PIE)和堆棧粉碎保護(hù)。這些主動安全功能可防止利用整個類別的零日等漏洞。
插個小消息,也方便想學(xué)習(xí)的同學(xué),在文章下方留言即可試聽課程外加領(lǐng)取千鋒HTML5、UI交互設(shè)計、PHP、Java+云數(shù)據(jù)、大數(shù)據(jù)開發(fā)、VR/AR/Unity游戲開發(fā)、Python人工智能、Linux云計算、全棧軟件測試、網(wǎng)絡(luò)安全等全部的視頻學(xué)習(xí)教程。
LABEL 指令:
LABEL 指令用于指定一個鏡像的描述信息
該LABEL指令將元數(shù)據(jù)添加到鏡像中。
LABEL是一個鍵值對。
要在LABEL值中包含空格,請像在命令行解析中一樣使用引號和續(xù)行符\。
一個鏡像可以有多個LABEL標(biāo)簽。您可以在一行中指定多個標(biāo)簽。并且目前的版本不再會影響到鏡像的大小了。
RUN 指令
RUN 指令是在容器內(nèi)執(zhí)行 shell 命令,默認(rèn)會是用 /bin/sh -c 的方式執(zhí)行。
執(zhí)行命令的兩種方式
RUN(shell形式,該命令在shell中運(yùn)行)RUN ["executable", "param1", "param2"](exec形式)之前說過,Dockerfile 中每一個指令都會建立一層,RUN 也不例外。每一個 RUN 的行為,就和剛才我們手工建立鏡像的過程一樣:新建立一層,在其上執(zhí)行這些命令,執(zhí)行結(jié)束后,commit 這一層的修改,構(gòu)成新的鏡像。
注意:Union FS 是有最大層數(shù)限制的,比如 AUFS,曾經(jīng)是最大不得超過 42 層,現(xiàn)在是不得超過 127 層。
所以,在使用 shell 方式,盡量多的使用續(xù)行符\
RUN /bin/bash -c 'source $HOME/.bashrc; \
echo $HOME'
寫 Dockerfile 的時候,要經(jīng)常提醒自己,這并不是在寫 Shell 腳本,而是在定義每一層該如何構(gòu)建。注意當(dāng)使用 exec 方式時,需要明確指定 shell 路徑,否則變量可能不會生效。