常用鏡像記錄

基礎(chǔ)鏡像

Scratch

空鏡像,也是源鏡像,本身鏡像不占空間。

市場(chǎng)上所有的鏡像都是基于它擴(kuò)展的。使用它構(gòu)建的鏡像大小幾乎和二進(jìn)制文件本身一樣大,適合運(yùn)行一個(gè)包含所有依賴的二進(jìn)制文件,如Golang 程序、無(wú)依賴的C程序等。
構(gòu)建一個(gè)centos鏡像:

FROM scratch
ADD centos-7-x86_64-docker.tar.xz /
CMD ["/bin/sh"]

構(gòu)建一個(gè)二進(jìn)制執(zhí)行文件的鏡像:

FROM scratch
ADD server /
CMD ["/server"]

Busybox

鏡像大?。?code>1.22MB
拉?。?code>docker pull busybox

Busybox在單一的可執(zhí)行文件中提供了精簡(jiǎn)的Unix工具集,可運(yùn)行于多款POSIX環(huán)境的操作系統(tǒng),由于BusyBox可執(zhí)行文件的文件比較小,使得它非常適合使用于嵌入式系統(tǒng)。

該鏡像也補(bǔ)充了一些常用的linux命令和基礎(chǔ)網(wǎng)絡(luò)配置,其構(gòu)建的Dockerfile如下:

FROM scratch
ADD busybox.tar.xz /
CMD ["sh"]

打開(kāi)busybox.tar.xz,目錄結(jié)構(gòu)如下:

微信截圖_20200622082103.png

從文件目錄上可以看出,集成的文件主要在/binetc目錄下:

  • /bin目錄下主要放置一些常用命令

    微信截圖_20200622082153.png

  • /etc目錄下補(bǔ)充了一些主機(jī),權(quán)限,網(wǎng)絡(luò)配置等信息。

Alpine

鏡像大小:2.67 MB
拉?。?code>docker pull alpine

版本號(hào) 發(fā)布日期 支持結(jié)束日期 Linux內(nèi)核版本 鏡像大小(x86-64)
3.2 2015-05-26 2017-05-01 3.18.xx 2.45 MB
3.3 2016-01-06 2017-11-01 4.1.xx 2.29 MB
3.4 2016-05-31 2018-05-01 4.4.xx 2.28 MB
3.5 2016-12-22 2018-11-01 4.4.xx 1.88 MB
3.6 2017-05-24 2019-05-01 4.9.xx 1.92 MB
3.7 2017-11-30 2019-11-01 4.9.xx 2.01 MB
3.8 2018-06-26 2020-05-01 4.14.xx 2.1 MB
3.9 2019-01-29 2020-11-01 4.19.xx 2.63 MB
3.10 2019-06-19 2021-05-01 4.19.xx 2.66 MB
3.11 2019-12-19 2021-11-01 5.4.xx 2.76 MB
3.12 2020-05-29 2022-05-01 5.4.xx 2.67 MB

Alpine Linux是一個(gè)由社區(qū)開(kāi)發(fā)的Linux操作系統(tǒng),該操作系統(tǒng)以安全為理念,面向x86路由器、防火墻、虛擬專用網(wǎng)、IP電話盒及服務(wù)器而設(shè)計(jì)。由于其體積小,通常用于提供快速啟動(dòng)時(shí)間的容器中。
官方鏡像地址
官網(wǎng)地址

它是生產(chǎn)環(huán)境上比較推薦使用的基礎(chǔ)鏡像,原因有以下幾點(diǎn):

  • 包含基礎(chǔ)的linux命令。
  • 官方更新很快,社區(qū)活躍,漏洞較少。
  • 支持目前市面上大部分x86-64指令集架構(gòu)類型的機(jī)器。
  • 還提供了可擴(kuò)展的包管理機(jī)制,讓你可以使用apk add命令(類似centosyum install)讓你div自己的鏡像。

在基礎(chǔ)鏡像上直接組裝,如果添加一個(gè)curl命令,那么你的dockerfile可以這么寫(xiě):

FROM alpine:3.12.0
RUN apk add --no-cache curl 
CMD ["/bin/sh"]

Java鏡像

frolvlad/alpine-java

鏡像大?。?code>168.3MB
拉?。?code>docker pull frolvlad/alpine-java

JDK8鏡像,移除了一些JDk包中的源碼,可視化等多余文件,Dockerfile如下:

FROM frolvlad/alpine-glibc:alpine-3.9

ENV JAVA_VERSION=8 \
    JAVA_UPDATE=202 \
    JAVA_BUILD=08 \
    JAVA_PATH=1961070e4c9b4e26a04e7f5a083f551e \
    JAVA_HOME="/usr/lib/jvm/default-jvm"

RUN apk add --no-cache --virtual=build-dependencies wget ca-certificates unzip && \
    cd "/tmp" && \
    wget --header "Cookie: oraclelicense=accept-securebackup-cookie;" \
        "http://download.oracle.com/otn-pub/java/jdk/${JAVA_VERSION}u${JAVA_UPDATE}-b${JAVA_BUILD}/${JAVA_PATH}/jdk-${JAVA_VERSION}u${JAVA_UPDATE}-linux-x64.tar.gz" && \
    tar -xzf "jdk-${JAVA_VERSION}u${JAVA_UPDATE}-linux-x64.tar.gz" && \
    mkdir -p "/usr/lib/jvm" && \
    mv "/tmp/jdk1.${JAVA_VERSION}.0_${JAVA_UPDATE}" "/usr/lib/jvm/java-${JAVA_VERSION}-oracle" && \
    ln -s "java-${JAVA_VERSION}-oracle" "$JAVA_HOME" && \
    ln -s "$JAVA_HOME/bin/"* "/usr/bin/" && \
    rm -rf "$JAVA_HOME/"*src.zip && \
    rm -rf "$JAVA_HOME/lib/missioncontrol" \
           "$JAVA_HOME/lib/visualvm" \
           "$JAVA_HOME/lib/"*javafx* \
           "$JAVA_HOME/jre/lib/plugin.jar" \
            ......省略若干
           "$JAVA_HOME/jre/lib/oblique-fonts" && \
    wget --header "Cookie: oraclelicense=accept-securebackup-cookie;" \
        "http://download.oracle.com/otn-pub/java/jce/${JAVA_VERSION}/jce_policy-${JAVA_VERSION}.zip" && \
    unzip -jo -d "${JAVA_HOME}/jre/lib/security" "jce_policy-${JAVA_VERSION}.zip" && \
    rm "${JAVA_HOME}/jre/lib/security/README.txt" && \
    apk del build-dependencies && \
    rm "/tmp/"* && \

需要特殊注意的時(shí),該鏡像也是基于alpine基礎(chǔ)鏡像構(gòu)建起來(lái)的,Layer層次是alpine -> glibc - > jdk,有興趣的小伙伴可以深究下。

操作系統(tǒng)鏡像

Centos

鏡像大小: 71.4MB
拉?。?code>docker pull centos

Ubuntu

鏡像大小:27.27MB
拉?。?code>docker pull ubuntu

最后編輯于
?著作權(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ù)。

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