濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > 通過Dockerfile構(gòu)建Docker鏡像的方法步驟

通過Dockerfile構(gòu)建Docker鏡像的方法步驟

熱門標(biāo)簽:陜西辦理400電話 貴陽網(wǎng)絡(luò)外呼系統(tǒng)軟件 南充電銷外呼系統(tǒng) 海外工廠地圖標(biāo)注 信陽電銷外呼系統(tǒng)怎么樣 宿州外呼系統(tǒng)公司 地圖標(biāo)注小程序 株洲電銷 南昌外呼系統(tǒng)定制

Dockerfile是一個(gè)文本文件,其內(nèi)包含了一條條的指令(Instruction),每一條指令構(gòu)建一層,因此每一條指令的內(nèi)容,就是描述該層應(yīng)當(dāng)如何構(gòu)建.

Dockerfile支持Shell類的行尾添加"\"的命令換行方式,以及行首"#"進(jìn)行注釋的格式.

使用Dockerfile構(gòu)建Docker鏡像時(shí)注意事項(xiàng):

(1).盡量選取滿足需求但較小的基礎(chǔ)系統(tǒng)鏡像;

(2).清理編譯生成文件、安裝包的緩存等臨時(shí)文件;

(3).安裝各個(gè)軟件時(shí)候要指定準(zhǔn)確的版本號(hào),并避免引入不需要的依賴;

(4).添加.dockerignore文件或使用干凈的工作目錄.

Dockerfile常用指令:

(1).FROM:用于指定要構(gòu)建的鏡像的基礎(chǔ)鏡像,它通常是Dockerfile中的第一條指令;

(2).LABEL:用于添加標(biāo)簽來幫助組織鏡像、記錄許可信息、輔助自動(dòng)化構(gòu)建等,標(biāo)簽是鍵值對(duì),以字符串存儲(chǔ);

(3).RUN:用于在鏡像中執(zhí)行命令,這會(huì)創(chuàng)建新的鏡像層,每個(gè)RUN指令創(chuàng)建一個(gè)新的鏡像層,永遠(yuǎn)將apt-get update和apt-get install組合成一條RUN;

RUN指令有兩種格式:

A.shell格式:RUN <命令>,就像直接在命令行中輸入的命令一樣;

B.exec格式:RUN ["可執(zhí)行文件", "參數(shù)1", "參數(shù)2"];

(4).COPY:支持簡(jiǎn)單將本地文件拷貝到容器中,通常使用COPY指令將應(yīng)用代碼賦值到鏡像中;

(5).EXPOSE:用于記錄應(yīng)用所使用的網(wǎng)絡(luò)端口;

(6).ENTRYPOINT:用于指定鏡像以容器方式啟動(dòng)后默認(rèn)運(yùn)行的程序;

(7).ENV:為容器中安裝的程序更新PATH環(huán)境變量.

下面的Dockerfile用于在容器中可以直接編譯執(zhí)行https://github.com/fengbingchun/Messy_Test:

FROM ubuntu:16.04
LABEL maintainer="FengBingchun fengbingchun@163.com" \ 
   version="1.0" \

   description="dockerfile test"
RUN dep_items='git cmake g++-5' \

  && apt-get update \

  && apt-get install -y $dep_items \ 
  && ln -s /usr/bin/g++-5 /usr/bin/g++ \

  && rm -rf /var/lib/apt/lists/*

構(gòu)建鏡像,執(zhí)行以下命令后會(huì)成功生成名字為fengbingchun/ubuntu:16.04的鏡像:

docker build -t fengbingchun/ubuntu:16.04 .

通過掛載主機(jī)目錄,新建容器test,執(zhí)行以下命令:

docker run -it -P --name test --mount type=bind,source=e:\GitCode\docker,target=/home/fengbingchun fengbingchun/ubuntu:16.04 /bin/bash

然后,在容器內(nèi),cd到/home/fengbingchun目錄下,clone Messy_Test執(zhí)行以下命令:

git clone https://github.com/fengbingchun/Messy_Test

然后cd到cd Messy_Test/prj/linux_cmake_CppBaseTest目錄下,依次執(zhí)行如下命令

./build.sh
./build/CppBaseTest

執(zhí)行結(jié)果如下圖所示,說明通過Dockerfile構(gòu)建的鏡像可以正常編譯執(zhí)行Messy_Test:

保存鏡像fengbingchun/ubuntu:16.04到tar包,執(zhí)行以下命令:

docker save -o ubuntu_16.04.tar fengbingchun/ubuntu:16.04

將ubuntu_16.04.tar拷貝到ubuntu系統(tǒng)下,從tar包加載一個(gè)鏡像,執(zhí)行以下命令:

docker load -i ubuntu_16.04.tar

然后執(zhí)行windows上類似的操作,在新創(chuàng)建的容器test中編譯、執(zhí)行Messy_Test,依次執(zhí)行如下命令:

docker run -it -P --name test --mount type=bind,source=/home/xxxx/Disk/GitHub/docker,target=/home/fengbingchun fengbingchun/ubuntu:16.04 /bin/bash
cd /home/fengbingchun/
git clone https://github.com/fengbingchun/Messy_Test
cd Messy_Test/prj/linux_cmake_CppBaseTest/
./build.sh
./build/CppBaseTest

執(zhí)行結(jié)果如下圖所示:說明在Windows上生成的鏡像打包后,在Ubuntu上load后可正常使用.

到此這篇關(guān)于通過Dockerfile構(gòu)建Docker鏡像的方法步驟的文章就介紹到這了,更多相關(guān)Dockerfile構(gòu)建Docker鏡像內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

標(biāo)簽:汕頭 鄭州 晉城 開封 玉林 石嘴山 三明 拉薩

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《通過Dockerfile構(gòu)建Docker鏡像的方法步驟》,本文關(guān)鍵詞  通過,Dockerfile,構(gòu)建,Docker,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《通過Dockerfile構(gòu)建Docker鏡像的方法步驟》相關(guān)的同類信息!
  • 本頁收集關(guān)于通過Dockerfile構(gòu)建Docker鏡像的方法步驟的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    济南市| 垫江县| 崇阳县| 庆安县| 吉林市| 佛学| 渝北区| 陆丰市| 大庆市| 新营市| 德州市| 衢州市| 朔州市| 石首市| 大新县| 手机| 绍兴县| 佛冈县| 云龙县| 阿尔山市| 徐闻县| 平南县| 砚山县| 沙田区| 临洮县| 当雄县| 都江堰市| 无极县| 辽宁省| 贵德县| 青浦区| 阿克陶县| 屯昌县| 兰溪市| 石嘴山市| 开江县| 河北区| 长春市| 镇江市| 逊克县| 卢氏县|