1. 程式人生 > >Dockerfile保留字指令介紹以及例項演示

Dockerfile保留字指令介紹以及例項演示

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映象

  1. 通過docker hub上centos映象建立的centos容器有以下特點: 預設工作路徑是/;預設不支援vim;預設不支援ifconfig; 在這裡插入圖片描述
  2. 自定義mycentos映象使其具有以下特點:登陸後的預設工作路徑為:/root;支援vim命令;支援ipconfig命令;
  3. 編寫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
  1. build Dockerfile
docker build -f /myDocker/Dockerfile -t mycentos:1.0 .

檢視build好的mycentos映象: 在這裡插入圖片描述

  1. 執行mycentos容器:
docker run -it --name mycentos_container mycentos:1.0

在這裡插入圖片描述

通過上圖可以看到自定義的mycentos跟預期的完全一致???