Dockerfile文件常用命令

FROM:獲取基礎鏡像,FROM必須是第一個命令,如果需要多個鏡像時,可以使用多個FROM指令(每個鏡像一次),如果不加tag,默認是使用latest,如下所示:

# FROM <image name>
# FROM <image name>:<tag>
FROM ubuntu
FROM java:8

RUN:在構建鏡像過程中執行特定的指令,並生成一箇中間鏡像

  • RUN <commond>:shell格式

  • RUN ["executable", "param1", "param2"]:exec格式

CMD:指定容器運行時的默認參數,如果出現多次以最後一次爲準

  • CMD ["executable", "param1", "param2"]:exec格式

  • CMD command param1 param2:shell格式

 

LABEL:給構建的鏡像打標籤,如果base image中也有標籤,則繼承,如果是同名標籤,則覆蓋。爲了減少圖層數量,儘量將標籤寫在一個LABEL指令中去

LABEL <key>=<value> <key>=<value> ...
# 實例

LABEL multi.lable1="value1" multi.lable2="value2" other="value3"

EXPOSE:爲構建的鏡像設置監聽端口,但是並不會讓容器監聽host的端口

EXPOSE <port> [<port>...]
#多個映射接口

EXPOSE 8080
EXPOSE 8090
EXPOSE 9090

ENV:在構建的鏡像中設置環境變量

#可以設置多個環境變量,如果<value>中存在空格,需要轉義或用引號"括起來

ENV myName="John Doe" \
myDog=Rex\ The\ Dog \
myCat=fluffy

ADD:在構建鏡像時,複製文件到鏡像中

# <src>可以是文件、目錄,也可以是文件URL,如果<src>是個目錄,則複製的是目錄下的所有內容,但不包括該目錄
# <dest>可以是絕對路徑,也可以是相對WORKDIR目錄的相對路徑
ADD <src>... <dest>
ADD ["<src>",... "<dest>"]

 

ENTRYPOINT:指定鏡像的執行程序,只有最後一條的ENTRYPOINT指令有效

#CMD和ENTRYPOINT至少得使用一個。ENTRYPOINT應該被當做docker的可執行程序,CMD應該被當做ENTRYPOINT的默認參數

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

VOLUME:指定鏡像內的目錄爲數據卷,使此目錄具有持久化存儲數據的功能,該目錄可以被容器本身訪問,也可以被其他容器訪問

VOLUME ["/var/log"]
VOLUME /var/log /var/db

下面是兩個簡單的構建鏡像的Dockerfile文件,分別是後臺的和前端的項目

後臺SpringBoot項目:

FROM java:8
ADD nile-mz-analysis-be-0.0.1.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

前端項目:

FROM nginx
RUN rm -rf /etc/nginx/nginx.conf
ADD mz-feature-mwc-customization /etc/nginx/html/mz-feature-mwc-customization
ADD nginx.conf /etc/nginx/nginx.conf

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章