Dockerfile詳解
Dockerfile是一個配置文件,可以自動執行創建Docker鏡像的步驟。它類似於Makefile。Docker從Dockerfile中讀取指令,以自動執行原本手動執行的步驟來創建映像。要構建鏡像,請創建一個名為Dockerfile的文件。
Dockerfile描述了組裝映像所需的步驟。創建Dockerfile後,調用docker build命令,使用包含Dockerfile的目錄的路徑作為參數。
docker build 詳解
docker build 是用來構建鏡像文件的主要使用參數如下:
•-t:鏡像的名字及標籤,通常 name:tag 或者 name 格式;可以在一次構建中為一個鏡像設置多個標籤。
•-f:--file=PATH/Dockerfile 要使用的Dockerfile的路徑。如果該路徑是相對路徑,並且您是從本地目錄構建的,則該路徑必須是相對於該目錄的。目錄,如果要從指向tarball或Git存儲庫的遠程URL進行構建,則路徑必須相對於遠程上下文的根。在所有情況下,文件都必須在構建上下文中。默認值Dockerfile。
案例:
docker build -t nginx-test .### 參數介紹
FROM
從 Docker 映像創建一個層。
FROM image FROM image:tag FROM image@digestCOPY
複製指令,從 Docker 客戶端的當前目錄中添加文件。
RUN
使用 生成應用程式。
CMD
指定要在容器中運行的命令。
•CMD 在docker run 時運行。
•RUN 是在 docker build。
CMD
注意:如果 Dockerfile 中如果存在多個 CMD 指令,僅最後一個生效。
ADD
ADD 指令和 COPY 的使用格類似(同樣需求下,官方推薦使用 COPY)。
ENV
設置環境變量,定義了環境變量,那麼在後續的指令中,就可以使用這個環境變量。
VOLUME
VOLUME指令創建具有指定名稱和標記的掛載點,
它作為包含來自本機主機或其他主機的外部裝載卷貨櫃。作用:
•避免重要的數據,因容器重啟而丟失,這是非常致命的。
•避免容器不斷變大。
VOLUME ["<路徑1>", "<路徑2>"...]VOLUME <路徑>EXPOSE
僅僅只是聲明埠。
作用:
•幫助鏡像使用者理解這個鏡像服務的守護埠,以方便配置映射。
•在運行時使用隨機埠映射時,也就是 docker run -P 時,會自動隨機映射 EXPOSE 的埠。
LABEL
標籤指令將元數據添加到圖像。標籤是一種。
鍵-值對。要指定不帶值的標籤,只需使用空。
字符串。要在標籤值中包含空格,請使用引號和。
反斜槓,就像在命令行解析中一樣。LABEL=[=...]LABEL[]LABEL[]WORKDIR
WORKDIR指令為後面的run、cmd、entry point、copy和add Dockerfile命令設置工作目錄。在一個Dockerfile中可以多次使用。相對路徑是相對於上一條WORKDIR指令的路徑定義的。
WORKDIR /a WORKDIR b WORKDIR c WORKDIR <工作目錄路徑>實戰案例操作
構建簡http
FROM centosRUN echo "Hello World!"COPY index.html /var/www/html/EXPOSE 80docker built -t httpd-test .運行次容器
docker run -d --name http-1 -p 80:80 httpd-test構建nginx
FROM nginxRUN echo "這是一個本地構建的nginx鏡像" > /usr/share/nginx/html/index.htmlEXPOSE 80docker build -t nginx-test .測試:
docker run -d --name nginx-1 -p 80:80 nginx-test
curl http://localhost