十分钟熟练Dockerfile指令
-
LABLE 給鏡像添加元數(shù)據(jù)信息 -
COPY 用戶從宿主機(jī)的當(dāng)前目錄復(fù)制文件至創(chuàng)建的新映像文件
-
ADD 類似于COPY指令,ADD支持使用tar文件和URL路徑
如果是一個(gè)本地系統(tǒng)上壓縮格式的tar文件,它降被展開(kāi)為一個(gè)目錄,其行為類似 "tar -x"命令,通過(guò)url獲取到的tar文件將不會(huì)自動(dòng)展開(kāi);
-
WORKDIR 用于為Dockerfile中所有的RUN、CMD、ENTRYPOINT、COPY和ADD指定工作目錄
-
VOLUME
定義存儲(chǔ)卷,只能制定容器內(nèi)部的目錄
-
EXPOSE 用戶為容器打開(kāi)制定要監(jiān)聽(tīng)的端口以實(shí)現(xiàn)與外部通信
只有docker run 加 -P選項(xiàng)時(shí)才會(huì)將端口暴漏出來(lái),如果不加,將不暴漏端口
[root@cv0002 docker]# docker run --name t1 --rm tinyhttpd:v0.0.6 /bin/httpd -f -h /data/web/html [root@cv0002 ~]# docker port t1 [root@cv0002 ~]#[root@cv0002 docker]# docker run --name t1 --rm -P tinyhttpd:v0.0.6 /bin/httpd -f -h /data/web/html [root@cv0002 ~]# docker port t1 80/tcp -> 0.0.0.0:1024 復(fù)制代碼-
ENV 用于為鏡像定義所需的環(huán)境變量,并可被Dockerfile文件中位于其后的其他指令(如ENV,ADD,COPY等)所調(diào)用,調(diào)用格式為\$variable或${variable}
RUN和CMD 如圖所示
注意:RUN命令在Dockerfile中可以有多個(gè),且可以都生效,但是CMD有多個(gè)的話,但只有最后一個(gè)生效
-
RUN 命令格式
注意:Json數(shù)組中,要使用雙引號(hào)
-
CMD命令格式
-
ENTRYPOINT
注意:docker run傳入的命令參數(shù)會(huì)覆蓋CMD指令的內(nèi)容并且附加到ENTRYPOINT命令最后作為其參數(shù)使用
注意:Dockerfile文件中也可以存在多個(gè)ENTRYPOINT指令,但僅有最后一個(gè)會(huì)生效
-
用于指定運(yùn)行的image時(shí)的或運(yùn)行Dockerfile中的任何RUN、CMD、或ENTRYPOINT指令指定的程序時(shí)的用戶名或UID,默認(rèn)為root用戶USER
注意:可以為任意數(shù)字,但是事件中必須為/etc/passwd中某用戶的有效UID,否則docker run命令將運(yùn)行失敗
-
HEALTHCHECK 檢測(cè)應(yīng)用是否正常運(yùn)行
-
SHELL 修改或額外定義運(yùn)行程序的默認(rèn)shell
-
STOPSIGNAL 更好docker stop 傳過(guò)來(lái)的信號(hào)指令,默認(rèn)為15
-
ARG 只再build中使用,類似變量,可以在docker run的時(shí)候通過(guò)--build-tag傳值,而ENV不可在docker run時(shí)傳值。
-
ONBUILD 用于在Dockerfile中定義一個(gè)觸發(fā)器(延時(shí)執(zhí)行)
當(dāng)此Dockerfile被build為映像文件后,此映像文件亦可作為base image被另一個(gè)Dockerfile用作FROM指令的參數(shù),并以之構(gòu)建新的映像文件,此時(shí),ONBUILD后的指令才會(huì)執(zhí)行。
注意:在ONBUILD指令中使用ADD或COPY指令應(yīng)該格外小心,因?yàn)樾聵?gòu)建過(guò)程的上下文有可能會(huì)缺少源文件
| 喜歡我寫的東西的朋友可以關(guān)注一下我的公眾號(hào):Devops部落 |
轉(zhuǎn)載于:https://juejin.im/post/5c8b0b04f265da2dc70742f6
與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的十分钟熟练Dockerfile指令的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 4.14Python数据处理篇之Matp
- 下一篇: 关于跨域