dockerfile 詳解

FROM

格式:FROM <image>或FROM <image> <tag>
解釋:FROM是Docker里的第一條指令(必須是第一條),后面跟有效的鏡像名(如果該鏡像你的本地倉庫沒有則會從遠程倉庫pull?。?。然后后面的其它指令FROM的鏡像中執(zhí)行。

MAINTAINER

格式:MAINTAINER <name>
解釋:指定維護者信息,寫自己的名字就可以了

RUN

格式:RUN <command>或["executable","param1","param2"]
解釋:運行命令,命令較長可以使用\來換行,推薦使用上面數(shù)組的格式

CMD

格式:CMD ["executable","param1","param2"]使用exec執(zhí)行,推薦方式
  CMD command param1 param2 在/bin/sh中執(zhí)行,提供給需要交互的應用
  CMD ["param1"," param2"]提供給ENTRYPOINT的默認參數(shù)
解釋:
CMD指定容器啟動是執(zhí)行的命令,每個Dockerfile只能有一條CMD命令,如果指定了多條,只有最后一條會被執(zhí)行,如果你在啟動容器的時候也指定了命令,那么會覆蓋dockerfile構建的鏡像里面的CMD命令。

ENTRYPOINT

格式:ENTRYPOINT ["executable","param1","param2"]
      ENTRYPOINT command param1 param2 (shell中執(zhí)行)
解釋:和CMD類似都是配置容器啟動后執(zhí)行的命令,并且不可被docker run提供的參數(shù)覆蓋。每個dockerfile中只能有一個ENTRYPOINT,當指定多個時,只有最后一個生效,ENTRYPOINT沒有CMD的可替換性。也就是你啟動容器的時候增加運行的命令不會覆蓋ENTRYPOINT指定的命令
    所以生產(chǎn)實踐中我們可以同時使用ENTRYPOINT和CMD,例如
ENTRYPOINT ["/bin/bash"]
CMD ["--help"]

USER

格式:USER daemon
解釋:指定運行容器時的用戶名和UID,后續(xù)的RUN指令也會使用這里指定的用戶

EXPOSE

格式:EXPOSE <port> [<port>...]
解釋:設置docker容器內(nèi)部暴露的端口號,如果需要外部訪問,還需要啟動容器時增加-p或者-P參數(shù)進行分配

ENV

格式:ENV <key> <value>
解釋:設置環(huán)境變量,可以在RUN之前使用,然后RUN命令時調(diào)用,容器啟動時這些環(huán)境變量都會被指定

ADD

格式:ADD <src> <dest>
      ADD ["<src>" "<dest>"]
解釋:將指定的<src>復制到容器文件系統(tǒng)中的<dest>,所有拷貝到container中的文件和文件夾權限為0775,uid和gid為0,如果文件是可識別的壓縮格式,則docker會幫助解壓縮

VOLUME

格式:VOLUME ["/data"]
解釋:可以將本地文件夾或者其他的container的文件掛載到中

WORKDIR

格式:WORKDIR /path
解釋:切換目錄,為后續(xù)的RUN、CMD、ENTRYPOINT指令配置工作目錄,可以多次切換(相當于cd),也可以使用多個WORKDIR指令,后續(xù)命令如果參數(shù)是相對路徑,則會基于之前命令指定的路徑,例如
WORKDIR /a
WORKDIR b
WORKDIR c
RUN pwd
則最終的路徑為/a/b/c

ONBUILD

ONBUILD指定的命令在構建鏡像時并不執(zhí)行,而是在它的子鏡像中執(zhí)行

ARG

格式:ARG <name> [=<default value>]
解釋:ARG指定了一個變量在docker build的時候使用,可以使用--build-arg <varname>=<value>來指定參數(shù)的值,不過如果構建的時候不指定就會報錯

例子:

容器內(nèi)安裝nginx并啟動

[root@hjy ~]# cat /opt/dockerfile/nginx/Dockerfile 
# This Dockerfile 

#Base image
FROM centos

#Maintainer
MAINTAINER hjy

#Commands
RUN rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
RUN yum -y install nginx && yum clean all
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
ADD index.html /usr/share/nginx/html/index.html
EXPOSE 80
CMD ["nginx"]
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 一、Docker創(chuàng)建鏡像的方式有兩種: 一種通過commit的方式:把做了一系列操作的容器關閉,然后利用docke...
    jie0112閱讀 3,920評論 0 3
  • ADD ADD命令有兩個參數(shù),源和目標。它的基本作用是從源系統(tǒng)的文件系統(tǒng)上復制文件到目標容器的文件系統(tǒng)。如果源是一...
    Superwind20閱讀 736評論 0 0
  • 12. 劉東進屋的時候,被晃著了眼。窗明幾凈的,又灑滿了陽光。和他那間黑咕隆咚的小屋相比,張北這里稱作天堂也不...
    一天到晚掙扎的三不閱讀 458評論 0 0
  • 俄國小說剛讀起來總是被那些長長的人名,話劇臺詞一般的對白,和無邏輯的情節(jié)搞得云里霧里;當讀到半本書以后,那些悲傷的...
    水泥的灰閱讀 393評論 0 0
  • 蝶變?nèi)松笔沁@次盛會的核心理念,它更代表著每位家人的一種追求和夢想!而卡佛尼要做的就是成就每位家人,同時每一位家人...
    權盛自媒體閱讀 931評論 0 1

友情鏈接更多精彩內(nèi)容