语法和c区别_dockerfile语法
上次寫了關于Dockerfile鏡像精簡之道之后,很多小伙伴找我問,dockerfile語法的一些東西,這邊文章就介紹一下dockerfile語法吧
FROM
FROM是位于我們dockerfile命令的第一層,首先就會使用該命令。當然一個DokcerFile中存在多個鏡像時,可以多次使用FROM命令
語法:
FROM /FROM : //tag沒有的話默認是latestFROM ubuntuMAINTAINER
可以理解為作者信息和維護者信息
語法:
MAINTAINER dockeruser MAINTAINER dockeruser dockeruser@gmail.comRUN
用來運行我們所需要的指令。該命令是構建容器時運行的命令以及提交命令行的結果,RUN命令是直接跟shell命令,在linux系統中默認 /bin/sh -C windows中默認是 cmd /S /C
語法:
RUN command RUN [“executable”,“param1”,“param2”] #函數調用 都一個參數類似可執行文件,后面是參數 使用exec 來執行的 總的來說命令較長可以使用 來換行。RUN [“/bin/bash”, “-c”, “echo hello”]。RUN apt-get update && apt-get install -y x11vnc xvfb firefoxCMD
CMD是啟動容器時默認執行的命令。啟動容器需要執行的參數,并且一個DockerFile文件中最好只有一個該命令參數。多個話會把最后一個作為最終的目標,參數執行與RUN 運行類似。引號要使用是雙引號,原因是參數傳遞后docker用來解析為一個json array
1. CMD ["executable","param1","param2"]2. CMD ["param1","param2"]3. CMD command param1 param2LABEL
構建生成的鏡像的元數據標簽,一個容器可以有多個LABEL文件。
例子參考:
LABEL multi.label1="value1" multi.label2="value2" other="value3"EXPOSE
聲明鏡像內服務所需要監聽的端口。暴露給外部使用。但是在使用的時候還需要加上-P 參數映射或者使用-p映射為指定端口
EXPOSE 22 EXPOSE 22 8080 9292ENV
功能為設置環境變量,可以讓其他命令來使用此參數。并且還有使用docker inspect 查看這個環境變量值。
語法 :
1. ENV 2. ENV = ...ENV JAVA_HOME /path/java/src在使用的時候就可以使用
ADD
復制命令,將文件復制到鏡像中去,
語法:
1. ADD ... 2. ADD ["",... ""]其中 src 可以使本地文件也可以是壓縮文件還可以是url ,dest 是容器內部的絕對路徑,也可以是相對于工作目錄的相對路徑。
ADD test relativeDir/ ADD test /relativeDirADD http://example.com/foobar /如果是一個文件夾了,復制整個目錄的內容,包括文件系統元數據
COPY
也是復制命令,不過該命令只能復制本地文件。
1. COPY ... 2. COPY ["",... ""]ENTRYPOINT
用來指定鏡像的默認入口,也是啟動的默認命令。
語法:
1. ENTRYPOINT ["executable", "param1", "param2"]2. ENTRYPOINT command param1 param2從命令來看與我們的CMD命令十分的相似,但是他們兩者有不同的區別。
首先ENTRYPOINT不會被運行的command命令覆蓋,CMD指定的命令會被覆蓋
如果兩者同時存在,當CMD命令不是一個完整的執行命令時,那么CMD的命令參數會被作為ENTRYPOINT的參數,只一個完整的命令時,誰在最后誰執行。
VOLUME
創建數據卷的掛載點,將容器內的文件或者其他容器中的文件掛載在該容器中。
語法:
VOLUME ["目錄"]1. VOLUME ["/home/log/"]2. VOLUME /home/log3. VOLUME /home/log /home/db需要使用數據進行持久化需要該操作。容器使用的是AUFS文件系統。容器關閉的時候數據會丟失,那么數據持久化 就需要使用掛載點來操作。還有一點需要注意的是該命令創建的掛載點是無法指定主機上的目錄,自動生成的。
USER
用來指定運行容器時的用戶名或者UID
1. USER daemo2. USER UIDWORKDIR
用來配置工作目錄,對RUN,CMD,ENTRYPOINT,COPY,ADD生效,如果目錄不存在會創建,也可以設置多次。切換目錄的操作相當于是Linux系統中的cd
WORKDIR /home/ruiqiWORKDIR dataRUN pwdpwd執行的結果是//home/ruiqi/data當然如果存在環境變量的值也可以 解析環境變量ENV PATH /pathWORKDIR $PATH/ruiqiRUN pwd pwd 的顯示結果是/path/ruiqiARG
用來指定一些參數信息。當然該參數可以被 build時使用 --build-arg user =asdasda 指定參數
語法:
ARG name = valueARG user = fruiqiARG passwd =12313ONBUILD
當該鏡像作為其他鏡像的基礎鏡像時,所設定的命令才會執行。
語法:
ONBUILD [INSTRUCTION]比如 ONBUILD RUN lsSTOPSIGNAL
容器退出的信號值,當容器退出的時候給系統發送什么樣的指令
STOPSIGNAL signalHEALTHCHECK
進行容器的健康檢查。
語法有兩種:
1. HEALTHCHECK [OPTIONS] CMD command2. HEALTHCHECK NONE 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的语法和c区别_dockerfile语法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: idea进入方法快捷键详情大全(idea
- 下一篇: 搭搭云配置系统概述-表单