Dockerfile保留字指令介紹以及例項演示
阿新 • • 發佈:2018-12-15
Dockerfile保留字指令
保留字指令 | 含義 |
---|---|
FROM | 基礎映象,表示當前映象是基於哪個映象的 |
MAINTAINER | 映象維護者的姓名和郵箱地址 |
RUN | 容器構建時需要執行的命令 |
EXPOSE | 當前容器對外暴露的埠號 |
WORKDIR | 指定容器建立後,終端預設登入進來的工作目錄 |
ENV | 在構建過程中設定環境變數 |
ADD | 將宿主機目錄下的檔案拷貝到映象中 ※:ADD命令會自動處理URL和解壓tar壓縮包 |
COPY | 類似於ADD,拷貝檔案和目錄到映象中 |
VOLUME | 容器資料卷,用於資料儲存、資料持久化和資料共享 |
CMD | 指定容器啟動時要執行的命令 ※:Dockerfile中可以有多個CMD指令,但只有最後一個生效,CMD會被docker run之後的引數替換 |
ENTRYPOINT | 指定容器啟動時要執行的命令 ※:ENTRYPOINT和CMD一樣,都是在指定容器啟動命令及引數 |
ONBUILD | 父映象被子映象繼承後,父映象的ONBUILD被觸發 |
指令例項
Base映象(scratch)
Docker hub中99%的映象都是通過在base映象中安裝和配合需要的軟體構建出來的。
Docker hub中centos7的Dockerfile:
FROM scratch ADD centos-7-docker.tar.xz / LABEL org.label-schema.schema-version="1.0" \ org.label-schema.name="CentOS Base Image" \ org.label-schema.vendor="CentOS" \ org.label-schema.license="GPLv2" \ org.label-schema.build-date="20181006" CMD ["/bin/bash"]
自定義centos映象
- 通過docker hub上centos映象建立的centos容器有以下特點: 預設工作路徑是/;預設不支援vim;預設不支援ifconfig;
- 自定義mycentos映象使其具有以下特點:登陸後的預設工作路徑為:/root;支援vim命令;支援ipconfig命令;
- 編寫Dockerfile:
# 設定基礎映象 FROM centos # 設定當前映象的維護者姓名和郵件 MAINTAINER NullPointerException<[email protected]> # 設定環境變數 ENV MYPATH /root # 設定預設工作路徑 WORKDIR $MYPATH # 安裝 vim RUN yum -y install vim # 安裝 net工具 RUN yum -y install net-tools # 設定對外暴露的埠號 EXPOSE 8088 # 列印預設工作路徑的環境變數 CMD echo $MYPATH CMD echo "build success ^.^" CMD /bin/bash
- build Dockerfile
docker build -f /myDocker/Dockerfile -t mycentos:1.0 .
檢視build好的mycentos映象:
- 執行mycentos容器:
docker run -it --name mycentos_container mycentos:1.0
通過上圖可以看到自定義的mycentos跟預期的完全一致???