溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Docker在線制作和離線制作鏡像的方法是什么

發(fā)布時(shí)間:2023-03-29 13:51:09 來(lái)源:億速云 閱讀:93 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹了Docker在線制作和離線制作鏡像的方法是什么的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇Docker在線制作和離線制作鏡像的方法是什么文章都會(huì)有所收獲,下面我們一起來(lái)看看吧。

    一、背景

    系統(tǒng)有個(gè)功能需要依賴chrome和chromedriver,利用無(wú)頭瀏覽器實(shí)現(xiàn)截圖功能,在虛擬機(jī)上能夠正常運(yùn)行,但切換到容器化的環(huán)境,因?yàn)榛A(chǔ)鏡像我們依賴的是openjdk,缺少相關(guān)驅(qū)動(dòng),同時(shí)翻了一下dockerhub,并沒有找到現(xiàn)有的官方鏡像能夠支撐功能的實(shí)現(xiàn),所以需要自己去制作Docker鏡像。

    二、依賴環(huán)境

    制作鏡像首先需要明確鏡像所需要依賴的環(huán)境和作用范圍。在這個(gè)場(chǎng)景中,需要安裝chrome和chromedriver,同時(shí)還得有jdk的環(huán)境以支撐模塊的運(yùn)行,安裝過(guò)程中需要解壓縮包,所以還需要unzip、tar工具,同時(shí)還需要下載依賴,所以得有yum環(huán)境。

    一般我們制作鏡像都是依賴于某個(gè)鏡像做為基礎(chǔ)鏡像在其上面來(lái)完成的,基礎(chǔ)鏡像這里我選擇的是centos7.9.2009,大小204M,因?yàn)楸旧碓撶R像已經(jīng)包含了tar和yum等基礎(chǔ)運(yùn)行環(huán)境,對(duì)于我們來(lái)說(shuō)操作起來(lái)會(huì)比較方便。鏡像制作分兩中模式,這里我分為在線制作和離線制作,推薦采用離線制作的方式。

    三、在線制作

    3.1 chromedriver

    在線制作就是依賴于某個(gè)基礎(chǔ)鏡像,在其運(yùn)行的基礎(chǔ)上安裝號(hào)環(huán)境再重新打包成一個(gè)鏡像。所以首先是拉取centos7.9.2009基礎(chǔ)鏡像到本地。

    docker pull centos:centos7.9.2009

    運(yùn)行基礎(chǔ)鏡像,數(shù)據(jù)卷掛載本地目錄/home/centos/到容器內(nèi)部目錄/home/env/,方便我們上傳一些文件到容器內(nèi)部

    docker run -itd --name centos -v /home/centos/:/home/env/ centos:centos7.9.2009

    chrome、chromedriver和jdk采用離線安裝的方式,上傳相關(guān)文件到宿主機(jī)/home/centos/,進(jìn)入容器可以看到掛載的目錄下也有上傳的文件。

    Docker在線制作和離線制作鏡像的方法是什么

    centos7.9.2009基礎(chǔ)鏡像沒有unzip工具,使用 yum install -y unzip zip 安裝工具,unzip chrome_rpm.zip 解壓chrome_rpm,使用 rpm -Uvh *.rpm --nodeps --force 進(jìn)行安裝。

    Docker在線制作和離線制作鏡像的方法是什么

    安裝后會(huì)報(bào)找不到 xdg-icon-resource,這個(gè)不影響,安裝完后繼續(xù)處理 chromedriver,將 chromedriver 加壓到指定目錄,同時(shí)授予可執(zhí)行權(quán)限。

    unzip chromedriver_linux64.zip
    mv chromedriver /usr/bin/
    
    # 設(shè)置權(quán)限
    chmod +x /usr/bin/chromedriver

    使用 yum 安裝 libxcb

    yum install libxcb

    libxcb 安裝完后使用 /usr/bin/chromedriver 可以看到谷歌驅(qū)動(dòng)安裝成功了

    Docker在線制作和離線制作鏡像的方法是什么

    3.2 中文包安裝

    使用chrome的過(guò)程中發(fā)現(xiàn)截圖后很多中文顯示不了,是因?yàn)?a title="服務(wù)器" target="_blank" href="http://kemok4.com/">服務(wù)器缺少了中文包。檢查容器內(nèi)部是否有中文包,命令不存在說(shuō)明沒有。

    Docker在線制作和離線制作鏡像的方法是什么

    yum安裝中文包和字體配置

    yum install fontconfig
    yum groupinstall "fonts"

    安裝之后重新驗(yàn)證,如果出現(xiàn)以下內(nèi)容則說(shuō)明安裝成功

    Docker在線制作和離線制作鏡像的方法是什么

    3.3 jdk1.8安裝

    jdk的安裝比較簡(jiǎn)單,將 jdk 解壓同時(shí)拷貝到 /usr/local/ 下就可以了

    tar -zxvf jdk-8u251-linux-x64.tar.gz
    mv jdk1.8.0_251 /usr/local/

    上面只是移動(dòng)了jdk文件的目錄,但是還沒有配置環(huán)境變量,試過(guò)直接在容器內(nèi)部配置jdk的環(huán)境變量,但是打包后的鏡像每次拉取都需要手動(dòng)執(zhí)行 source /etc/profile 環(huán)境變量才會(huì)生效。網(wǎng)上有的說(shuō)可以把環(huán)境變量放到 ~/.bashrc 中,但是試了并不生效。想了下,可以依賴docker傳遞環(huán)境變量參數(shù),所以先把安裝了環(huán)境的構(gòu)建成一個(gè)基礎(chǔ)鏡像,通過(guò)dockerfile攜帶環(huán)境變量,最終構(gòu)建成一個(gè)完整的基礎(chǔ)鏡像。

    把安裝了環(huán)境的docker容器制作成鏡像,同時(shí)推送到遠(yuǎn)程harbor倉(cāng)庫(kù)

    # docker容器構(gòu)建成鏡像
    docker commit -a "icc" -m "base images centos7.9.2009, include java、chrome and chromedriver" 671d33884ee6 127.0.0.1:10000/icc/openjdk:8-jdk-env
    
    # 推送到遠(yuǎn)程倉(cāng)庫(kù)
    docker push 127.0.0.1:10000/icc/openjdk:8-jdk-env

    通過(guò) dockerfile 的方式構(gòu)建基礎(chǔ)鏡像,其中傳遞 JDK 的環(huán)境變量

    FROM 127.0.0.1:10000/icc/openjdk:8-jdk-env
    
    ENV JAVA_HOME=/usr/local/jdk1.8.0_251
    ENV PATH=$PATH:$JAVA_HOME/bin
    ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    
    WORKDIR /home/icc/

    構(gòu)建鏡像并推送到遠(yuǎn)程harbor倉(cāng)庫(kù)

    docker build --tag 127.0.0.1:10000/icc/openjdk:8-jdk-icc ./
    docker push 127.0.0.1:10000/icc/openjdk:8-jdk-icc

    Docker在線制作和離線制作鏡像的方法是什么

    四、離線制作

    離線制作,就是把依賴的環(huán)境都下載,依賴Dockerfile幫我們完成環(huán)境的安裝的鏡像的制作。

    編寫Dockerfile文件

    FROM centos:7
    
    # 安裝chrome
    ADD google-chrome-stable.rpm /usr/local
    RUN yum -y localinstall /usr/local/google-chrome-stable.rpm
    
    # 安裝chromedriver
    ADD chromedriver.tar.gz /usr/bin
    
    # 安裝中文字體
    RUN yum -y groupinstall "fonts"
    
    # 安裝JDK
    ADD jdk-8u251-linux-x64.tar.gz /usr/local/
    
    ENV JAVA_HOME=/usr/local/jdk1.8.0_251
    ENV PATH=$PATH:$JAVA_HOME/bin
    ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    
    WORKDIR /home/icc/

    五、驗(yàn)證

    對(duì)于模塊的編排文件來(lái)說(shuō),只需要把基礎(chǔ)鏡像換一下便可以了

    Docker在線制作和離線制作鏡像的方法是什么

    在k8s集群上可以看到也已經(jīng)有相應(yīng)的環(huán)境

    Docker在線制作和離線制作鏡像的方法是什么

    關(guān)于“Docker在線制作和離線制作鏡像的方法是什么”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“Docker在線制作和離線制作鏡像的方法是什么”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

    向AI問(wèn)一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI