十分钟熟练Dockerfile指令
生活随笔
收集整理的這篇文章主要介紹了
十分钟熟练Dockerfile指令
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
-
LABLE 給鏡像添加元數據信息 -
COPY 用戶從宿主機的當前目錄復制文件至創建的新映像文件
-
ADD 類似于COPY指令,ADD支持使用tar文件和URL路徑
如果是一個本地系統上壓縮格式的tar文件,它降被展開為一個目錄,其行為類似 "tar -x"命令,通過url獲取到的tar文件將不會自動展開;
-
WORKDIR 用于為Dockerfile中所有的RUN、CMD、ENTRYPOINT、COPY和ADD指定工作目錄
-
VOLUME
定義存儲卷,只能制定容器內部的目錄
-
EXPOSE 用戶為容器打開制定要監聽的端口以實現與外部通信
只有docker run 加 -P選項時才會將端口暴漏出來,如果不加,將不暴漏端口
[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 復制代碼-
ENV 用于為鏡像定義所需的環境變量,并可被Dockerfile文件中位于其后的其他指令(如ENV,ADD,COPY等)所調用,調用格式為\$variable或${variable}
RUN和CMD 如圖所示
注意:RUN命令在Dockerfile中可以有多個,且可以都生效,但是CMD有多個的話,但只有最后一個生效
-
RUN 命令格式
注意:Json數組中,要使用雙引號
-
CMD命令格式
-
ENTRYPOINT
注意:docker run傳入的命令參數會覆蓋CMD指令的內容并且附加到ENTRYPOINT命令最后作為其參數使用
注意:Dockerfile文件中也可以存在多個ENTRYPOINT指令,但僅有最后一個會生效
-
用于指定運行的image時的或運行Dockerfile中的任何RUN、CMD、或ENTRYPOINT指令指定的程序時的用戶名或UID,默認為root用戶USER
注意:可以為任意數字,但是事件中必須為/etc/passwd中某用戶的有效UID,否則docker run命令將運行失敗
-
HEALTHCHECK 檢測應用是否正常運行
-
SHELL 修改或額外定義運行程序的默認shell
-
STOPSIGNAL 更好docker stop 傳過來的信號指令,默認為15
-
ARG 只再build中使用,類似變量,可以在docker run的時候通過--build-tag傳值,而ENV不可在docker run時傳值。
-
ONBUILD 用于在Dockerfile中定義一個觸發器(延時執行)
當此Dockerfile被build為映像文件后,此映像文件亦可作為base image被另一個Dockerfile用作FROM指令的參數,并以之構建新的映像文件,此時,ONBUILD后的指令才會執行。
注意:在ONBUILD指令中使用ADD或COPY指令應該格外小心,因為新構建過程的上下文有可能會缺少源文件
| 喜歡我寫的東西的朋友可以關注一下我的公眾號:Devops部落 |
轉載于:https://juejin.im/post/5c8b0b04f265da2dc70742f6
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的十分钟熟练Dockerfile指令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4.14Python数据处理篇之Matp
- 下一篇: 关于跨域