云計算
Docker中制作鏡像一共有兩個方法:
創(chuàng)新互聯(lián)服務項目包括西湖網(wǎng)站建設、西湖網(wǎng)站制作、西湖網(wǎng)頁制作以及西湖網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網(wǎng)行業(yè)的解決方案,西湖網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到西湖省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!1. 基于容器制作鏡像:
2. 基于Dockerfile制作鏡像;
docker build …
Dockerfile的制作步驟:
1.創(chuàng)建一個目錄;
2.在目錄中創(chuàng)建一個首字母大寫的文件,供docker build識別;
3.因為Dockerfile的執(zhí)行環(huán)境在創(chuàng)建的目錄中,所以可以創(chuàng)建相對應的文件,供dockerfile使用;
ex:
[root@master~]#lsdocimage Dockerfileindex.html [root@master~]#catdocimage/Dockerfile FROMbusybox:latest LABELmaintainer="hevttc" ENVDOC_ROOT="/tmp/"\\ VOLUME_ROOT="/data/mydata"\\ ARGU="/usr/sbin/" COPYindex.html/tmp/ VOLUME${VOLUME_ROOT} RUNifconfig-a&&\\ cat${DOC_ROOT}index.html
Dockerfile書寫格式:
Dockerfile Format
“#”開頭的行是注釋行(可以多行,任意位置);
INSTRUCTION arguments
Docker是順序執(zhí)行Dockerfile中的內(nèi)容,注意書寫順序;
Dockerfile中幾個重要的指令:
1.FROM (指定基準鏡像)
2.LABEL(寫入當前Dockerfile的制作者信息);
3.COPY(將宿主機的文件拷貝至鏡像中);
4.ADD(類似于COPY指令,支持TAR文件和URL路徑);
5.WORKDIR(用于為Dockerfile中所有的RUN, CMD, ENTRYPOINT, COPY和ADD指定設定工作目錄;);
6.VOLUME(用于在image中創(chuàng)建一個掛載點目錄,可以用于在Docker Host上掛載卷);
個人并不建議使用:這是Docker daemon創(chuàng)建托管卷,并不是綁定掛載;
7.EXPOSE(為容器打開要監(jiān)聽的端口,實現(xiàn)與外部的通信);
EXPOSE
8.ENV(為鏡像定義環(huán)境變量,可以被其他指令調(diào)用,build_time和run_time都可被使用);
調(diào)用格式:
$variable_name或${variable_name}
9.ARG (在創(chuàng)建鏡像是build_time使用的變量,一般用ARG寫版本號和作者);
10.RUN(用于指定Docker build過程中運行的程序);
11.CMD(類似于RUN命令,在run_time執(zhí)行);
12.ENTRYPOINT(類似于CMD指令)
[root@master~]#catdocimage1/entrypoint.sh #!/bin/sh exec$@ [root@master~]#catdocimage1/Dockerfile FROMnginx:1.14-alpine COPYentrypoint.sh/bin/ CMD["/usr/local/nginx","-g","daemonoff;"] ENTRYPOINT["/bin/entrypoint.sh"] [root@master~]#lldocimage1/ 總用量8 -rw-r--r--1rootroot12911月120:42Dockerfile -rwxr-xr-x1rootroot1911月120:16entrypoint.sh
命令執(zhí)行圖
創(chuàng)建一個Dockerfile;
[root@www~]#mkdirdocimage [root@www~]#vimdocimage/Dockerfile [root@www~]# [root@www~]#vimdocimage/test.txt [root@www~]#catdocimage/Dockerfile FROMnginx:1.14-alpine LABELmaintainer="liujingyu" ENVDOC_ROOT="/tmp"\\ VOLUME_ROOT=/data/mydata COPYtest.txt${DOC_ROOT} VOLUME${VOLUME_ROOT} RUNecho123>${DOC_ROOT}/test.txt CMDcat${DOC_ROOT}/test.txt [root@www~]# [root@www~]#catdocimage/test.txt THISisDockerTEST;
用Dockerfile創(chuàng)建鏡像:
[root@www~]#dockerbuilddocimage/-tljymyy/nginx:v0.2 SendingbuildcontexttoDockerdaemon3.072kB Step1/7:FROMnginx:1.14-alpine --->77bae8d00654 Step2/7:LABELmaintainer="liujingyu" --->Usingcache --->a012ac4c6f51 Step3/7:ENVDOC_ROOT="/tmp"VOLUME_ROOT=/data/mydata --->Usingcache --->ee6ed363bfde Step4/7:COPYtest.txt${DOC_ROOT} --->Usingcache --->a416671fde2a Step5/7:VOLUME${VOLUME_ROOT} --->Usingcache --->84bf38b22301 Step6/7:RUNecho123>${DOC_ROOT}/test.txt --->Usingcache --->756cd9857096 Step7/7:CMDcat${DOC_ROOT}/test.txt --->Runningina2f99fcc5fba Removingintermediatecontainera2f99fcc5fba --->dac468a636e0 Successfullybuiltdac468a636e0 Successfullytaggedljymyy/nginx:v0.2 [root@www~]#dockerimagels REPOSITORYTAGIMAGEIDCREATEDSIZE ljymyy/nginxv0.2dac468a636e02minutesago17.7MB
運行此鏡像:
[root@www~]#dockercontainerrun--rm--namengx1ljymyy/nginx:v0.2 123