FROM指令:docker
格式爲:FROM<image>:<tag>或者FROM<image>數據庫
Dockerfile的第一條指令必須是FROM,用來指定要製做的鏡像繼承自哪一個鏡像。能夠寫多個FROM指令構建複雜的鏡像。centos
MAINTAINER指令:服務器
用來聲明建立的鏡像的做者等信息。該命令非必需。網絡
RUN指令:spa
格式爲RUN<command>或者RUN["命令","參數1","參數2".......]code
用來修改鏡像的指令,經常使用來安裝庫、程序以及配置程序。一條RUN指令執行完畢後,會在當前鏡像上建立一個新的鏡像層,接下來的指令會在新的鏡像上繼續運行。RUN的兩種格式舉例:blog
RUN yum update繼承
RUN ["yum","update"]ip
第一種形式是在/bin/sh環境下執行的命令,第二種是直接調用exec來執行。還可使用&&符號將多條命令鏈接到同一條RUN語句中執行。
EXPOSE指令:
格式爲:EXPOSE<port>
該指令用來說容器中的端口暴露出來,也可使用「docker run -p」實現和服務器端口的映射。多個端口之間使用空格隔開。「docket run -P」能夠將指定的容器端口映射到宿主機的隨機端口。
CMD指令:
該指令有三種格式:
CMD ["命令","參數1",「參數2」......] 使用exec執行,推薦方式。
CMD 命令 參數1 參數2 ....... 在/bin/sh中執行,提供給須要交互的應用。
CMD ["參數1","參數2"......] 提供給ENTRYPOINT的默認參數。
指定容器時執行的命令,每一個Dockerfile只執行一條CMD指令。若是指定了多條CMD指令,只有最後一條執行。若是用戶啓動容器時指定了運行的命令,則會覆蓋掉CMD的指令。
ENTRYPOINT指令:
該指令有兩種格式:
ENTRYPOINT ["命令","參數1",「參數2」......] 使用exec執行。
ENTRYPOINT 命令 參數1 參數2 ....... 在/bin/sh中執行。
指定容器時執行的命令,每一個Dockerfile只執行一條ENTRYPOINT指令。若是指定了多條ENTRYPOINT指令,只有最後一條執行。
ENTRYPOINT和CMD區別在於運行容器時添加在鏡像名以後的參數,對於ENTRYPOINT是拼接,而對於CMD命令則是覆蓋。固然,咱們也能夠在運行容器的時候經過--entrypoint搭配起來使用。 例如指定ENTRYPOINT ["ls","-l"],咱們運行容器時,docker run centos -a,則實際運行的是docker run centos ls -l -a 一般狀況下,將CMD和ENTRYPOINT搭配起來使用。ENTRYPOINT用於 指定須要運行的命令,CMD用於運行命令所須要的參數。 ENTRYPOINT ["ls"] CMD ["-a ","-l"]
VOLUME指令:
格式爲VOLUME ["/data"]
建立一個能夠從本地主機或其餘容器掛載的掛載點。通常用來存放數據庫或者須要永久保存的數據。多個容器能夠經過掛載同一個掛載點共享數據,即使其中一個容器已經中止,掛載點仍然能夠訪問。
ENV指令:
格式爲:ENV <key> <value>
指定一個環境變量,會被後續RUN指令使用,並在容器運行時保持。在運行容器的時候,經過-e參數能夠修改這個環境變量。
ADD指令
格式爲ADD <src> <dest>
第一個參數用來指定源文件,能夠是文件路徑、文件夾路徑或網絡文件的URL。若是是文件夾或者文件夾路徑,必須是相對Dockerfile所在目錄的相對路徑。若是是URL,則建立鏡像時,會先下載下來,再添加到鏡像中。
第二個參數是文件須要放置在目標鏡像的位置。若是源文件是主機上zip或者tar形式的壓縮文件,Docker會先解壓縮,而後將文件添加到鏡像的指定位置。若是源文件是一個經過URL指定的網絡壓縮文件,則不會解壓。
COPY指令:
格式爲:COPY<src> <dest>
複製本地主機的<src>(爲Dockerfile所在目錄的相對路徑)到容器的<dest>。當使用本地目錄時,推薦使用COPY.
ONBUILD指令:
觸發器指令。構建鏡像的時候,Docker的鏡像構建器會將全部的ONBUILD指令指定的命令保存到鏡像的元數據中,這些命令在當前鏡像構建過程當中並不會執行,只有當新的鏡像使用FROM指令指定父鏡像爲這個鏡像時,纔會出發執行。