1. 程式人生 > 其它 >Dockerfile 構建映象

Dockerfile 構建映象

從 Dockerfile 構建映象涉及三個步驟

  • 1. 建立工作目錄
  • 2. 編寫 Dockerfile 規格
  • 3. 使用 docker build 命令構建映象

1. 建立工作目錄

這個根據應用實際情況,自定義

2.編寫 Dockerfile 規格

 

dockerfile

#This is a comment line
FROM rhel7.5
LABEL description="This is a custom httpd image"
MAINTAINER Jingyan
RUN yum install -y httpd
EXPOSE 80
ENV Log "info"
ADD http://jingyan.com/img.pdf /var/www/html
COPY ./src/ var/www/html
USER apache
ENTRYPOINT ["/usr/sbin/httpd"]
CMD ["-D","FOREGROUND"]

1 井號 (#) 開頭的行是註釋
2 新容器映象將在 rhel7.5 容器映象基礎上構建
可以將任何其他容器映象用作基礎映象,而不僅限於來自作業系統分發的映象
3 LABEL 負責新增通用元資料到映象中
4 MAINTAINER 負責設定所生成的容器映象的 Author 欄位。您可以使用 docker inspect 命令檢視映象元資料
5 RUN 在當前映象頂部的新層中執行命令,然後提交結果
所提交的結果將用於 Dockerfile 中的下一步
用於執行命令的 shell 是 /bin/sh
6 EXPOSE 指示容器在執行時偵聽指定的網路埠
Docker 容器化環境使用此資訊,通過連結的容器功能進行容器互連
EXPOSE 指令僅僅是元資料;不會使埠可從主機進行訪問。docker run 命令的 -p 選項可以開放主機上的埠
7 ENV 負責定義可供容器使用的環境變數
可以在 Dockerfile 內宣告多個 ENV 指令
可以在容器內使用 env 命令來檢視各個環境變數
8 ADD 複製新檔案、目錄或遠端 URL,並將它們新增到容器檔案系統中
9 COPY 也複製新檔案和目錄,並將它們新增到容器檔案系統中
COPY無法使用 URL
10 USER 指定執行容器映象時要使用的使用者名稱或 UID,用於 Dockerfile 中的 RUN、CMD 和ENTRYPOINT 指令
出於安全原因,最好定義 root 之外的其他使用者名稱
11 ENTRYPOINT 指定在建立容器時要執行的預設命令
預設情況下,執行的命令是 /bin/sh -c,除非指定了 ENTRYPOINT
12 CMD 提供 ENTRYPOINT 指令的預設引數

RUN 指令負責修改映象內容
下列指令負責新增元資料到映象

  • LABEL
  • MAINTAINER
  • EXPOSE
  • 可以通過 RUN 和 ENTRYPOINT 指令更改容器啟動時執行的預設命令

下列指令負責管理容器環境

  • WORKDIR
  • ENV
  • USER

VOLUME 指令在容器中建立掛載點

  • Dockerfile 提供了兩個指令,可將資源包含在容器映象中:
    ADD
    COPY

3. 使用 docker build 命令構建映象

docker build 命令處理 Dockerfile 並根據其包含的指令構建新映象,如:docker build -t NAME:TAG DIR
DIR 是工作目錄路徑。如果工作目錄是 shell 的當前目錄,它可以是由句號 (.) 指定的當前目錄
NAME:TAG 是分配至新映象的帶標籤名稱。它通過 -t 選項指定。如果未指定 TAG,則映象自動標記為 latest