欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Docker制作鏡像的兩種方式(在線制作和離線制作)

 更新時間:2023年03月29日 11:18:55   作者:芋圓Magic  
我們知道要創(chuàng)建一個Docker容器,要先有Docker鏡像,Docker鏡像怎么創(chuàng)建的呢?下面這篇文章主要給大家介紹了關(guān)于Docker制作鏡像的兩種方式(在線制作和離線制作)的相關(guān)資料,需要的朋友可以參考下

一、背景

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

二、依賴環(huán)境

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

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

三、在線制作

3.1 chromedriver

在線制作就是依賴于某個基礎(chǔ)鏡像,在其運(yùn)行的基礎(chǔ)上安裝號環(huán)境再重新打包成一個鏡像。所以首先是拉取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)入容器可以看到掛載的目錄下也有上傳的文件。

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

安裝后會報找不到 xdg-icon-resource,這個不影響,安裝完后繼續(xù)處理 chromedriver,將 chromedriver 加壓到指定目錄,同時授予可執(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ū)動安裝成功了

3.2 中文包安裝

使用chrome的過程中發(fā)現(xiàn)截圖后很多中文顯示不了,是因?yàn)榉?wù)器缺少了中文包。檢查容器內(nèi)部是否有中文包,命令不存在說明沒有。

yum安裝中文包和字體配置

yum install fontconfig
yum groupinstall "fonts"

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

3.3 jdk1.8安裝

jdk的安裝比較簡單,將 jdk 解壓同時拷貝到 /usr/local/ 下就可以了

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

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

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

# 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)程倉庫
docker push 127.0.0.1:10000/icc/openjdk:8-jdk-env

通過 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倉庫

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

四、離線制作

離線制作,就是把依賴的環(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)證

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

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

總結(jié)

到此這篇關(guān)于Docker制作鏡像的兩種方式的文章就介紹到這了,更多相關(guān)Docker制作鏡像方式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 聊聊Docker中容器的創(chuàng)建與啟停問題

    聊聊Docker中容器的創(chuàng)建與啟停問題

    一個進(jìn)程可以視為一個被執(zhí)行的應(yīng)用程序,同樣,一個Docker容器可以視為一個運(yùn)行中的Docker鏡像,這篇文章主要介紹了Docker中容器的創(chuàng)建與啟停,需要的朋友可以參考下
    2022-06-06
  • Docker添加tomcat容器無法訪問首頁解決方案

    Docker添加tomcat容器無法訪問首頁解決方案

    這篇文章主要介紹了Docker添加tomcat容器無法訪問首頁解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • 詳解Docker Compose 中可用的環(huán)境變量問題

    詳解Docker Compose 中可用的環(huán)境變量問題

    Compose 的多個部分在某種情況下處理環(huán)境變量。這篇文章主要介紹了Docker Compose 中可用的環(huán)境變量問題,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • 使用Docker創(chuàng)建FTP服務(wù)器的過程解析

    使用Docker創(chuàng)建FTP服務(wù)器的過程解析

    這篇文章主要介紹了使用Docker創(chuàng)建FTP服務(wù)器的過程解析,使用?Docker?搭建?FTP?服務(wù),不僅十分簡單,而且可以對宿主機(jī)有一定的隔離,對Docker創(chuàng)建FTP服務(wù)器的過程感興趣的朋友一起看看吧
    2022-04-04
  • CentOS 7上安裝Docker 1.8 的步驟詳解

    CentOS 7上安裝Docker 1.8 的步驟詳解

    本文分步驟給大家介紹了CentOS 7上安裝Docker 1.8 的步驟詳解,需要的朋友可以參考下
    2018-11-11
  • 教你如何利用docker-maven-plugin自動化部署

    教你如何利用docker-maven-plugin自動化部署

    本文通過兩個例子給大家講解如何利用docker-maven-plugin自動化部署,給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-09-09
  • docker?創(chuàng)建容器時指定容器ip的實(shí)現(xiàn)示例

    docker?創(chuàng)建容器時指定容器ip的實(shí)現(xiàn)示例

    在實(shí)際部署中,我們需要指定容器ip,本文主要介紹了docker?創(chuàng)建容器時指定容器ip,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Docker部署Mysql,.Net6,Sqlserver等容器

    Docker部署Mysql,.Net6,Sqlserver等容器

    這篇文章介紹了Docker部署Mysql,.Net6,Sqlserver等容器的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • 用Docker作為PaaS的替代方案是否完美無缺

    用Docker作為PaaS的替代方案是否完美無缺

    Docker的出現(xiàn)似乎又帶來了一種新的選擇,而且對于開發(fā)者來說更加靈活、便捷、易用。既然用戶可以直接在Docker上運(yùn)行,PaaS是否還有應(yīng)用場景?面對企業(yè)繁雜的應(yīng)用環(huán)境,用Docker作為PaaS的替代方案是否完美無缺
    2016-11-11
  • docker鏡像管理命令詳解

    docker鏡像管理命令詳解

    這篇文章主要介紹了docker鏡像管理命令,我們也可以使用命令來搜索鏡像,比如我們需要一個tomcat的鏡像來作為我們的web服務(wù),我們可以通過 docker search 命令搜索tomcat來尋找適合我們的鏡像,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2022-07-07

最新評論