認識 Dockerfile 檔案之映象構建

2021-10-23 02:10:01 字數 3460 閱讀 4845

【dockerfile核心命令】

1、from 指定基礎映象構建

寫法:from 指定基礎映象

2、copy 複製命令。從上下文目錄中複製檔案或者目錄到容器裡指定路徑。

寫法:copy 源路徑,目標路徑

copy ["源路徑","目標路徑"]    

3、run執行指令。構建的時候執行的指令

主要在於映象構建的時候執行,執行build命令的時候 

後面接的命令就是shell輸入的命令

寫法run  shell命令 引數1 引數2

run ["shell命令 ","引數1"," 引數2"]

例如:run ["echo",">"," /usr/share/index.html"]

4、cmd執行指令。執行容器時候執行的指令

主要在於映象執行容器的時候生成,執行run的時候執行

寫法cmd ","",...] 

例如:cmd ["dotnet","netcore.dll"]

缺點:在run 命令後面可以進行覆蓋

docker run -d -p  netcore dotnet netcore.dll 進行覆蓋掉

5、entrypoint執行指令。執行容器時候執行的指令(不會被覆蓋)

寫法entrypoint ["","","",...]

可以和cmd動態結合,設定動態的配置引數

例如 entrypoint ["nginx", "-c"] 定參

cmd ["/etc/nginx/nginx.conf"]變參

6、expose暴露埠指令

僅僅宣告埠,就是指定映象暴露的埠

在run 的時候,通過docker run -p 會自動隨機對映到expose埠

寫法expose 埠

expose 埠

例如 expose 5000

expose 5001

7、workdir工作目錄指令

用於應用在容器內的工作目錄,就好比:netcore目錄

寫法workdir 《工作目錄路徑》

例如workdir /netcore

或者workdir /nginx

安裝 nginx 所需工具 =》apt -y install gcc make pcre-devel zlib-devel tar zlib

nginx 解壓/nginx 目錄 =》tar -zxvf  nginx-1.16.1.tar.gz

切換到/nginx/nginx-1.16.1 執行 ./configure , make ,make install =》cd nginx-1.16.1 && ./configure && make && make install

切換到/usr/local/nginx/sbin,執行 ./nginx 啟動nginx =》=》cd /usr/local/nginx/sbin && ./nginx

【配置nginx的dockerfile檔案】

from ubuntu

run apt -y install gcc make pcre-devel zlib-devel tar zlib

workdir /nginx

copy nginx-1.16.1.tar.gz /nginx

run tar -zxvf nginx-1.16.1.tar.gz

run cd nginx-1.16.1 && ./configure && make && make install

expose 80

cmd /bin/bash

successfully built [image-id]

successfully tagged nginx:latest

【啟動 nginx 命令】

指令說明

form

指定基礎映象(from是必備的指令,並且必須為第一條指令)。

run用來執行命令列命令。其基本格式:

shell格式: run  《命令》  ,輸入在bash環境中的命令即可,乙個dockerfile允許使用run不得超過127層,所以,使用一次run, 使用 『 \ 』 換行,使用『 && 』執行下一條命令。一般使用此種格式;

exec格式: run  <"可執行檔案", "引數1", "引數2">,此種方式像是函式呼叫中的格式;

copy

複製檔案。 其基本格式:

格式1:copy 《源路徑》...《目標路徑》

格式2:copy [「《源路徑1>」,....."《目標路徑》"]

add更高階的複製檔案,在copy的基礎上增加了一些功能,如果複製的是壓縮包的話,會直接解壓,而不需要在使用run解壓;

cmd容器啟動命令。其基本格式:

shell格式: cmd 《命令》

exec格式: cmd ["可執行檔案", "引數1", "引數2"...]

引數列**式: cmd [「引數1」, 「引數2」...],在指定了entrypoint指令後,用cmd指定具體的引數

entrypoint

入口點。其基本格式分為exec和shell,entrypoint的目的和cmd一樣,都是在指定容器啟動程式及引數。entrypoint在執行中可以替代,不過比cmd繁瑣,需要通過docker run 的引數--entrypoint 來指定。當指定了entrypoint後,cmd的含義就發生了改變,不在是直接執行其命令,而是將cmd的內容作為引數傳遞給entrypoint指令。其執行時就變成了:  ""

env設定環境變數。(都可以使用這裡使用的變數)其基本格式:

格式1:env

格式2:env ==...

arg構建引數。構建引數和env的效果一樣,都是設定環境變數,所不同的是arg所構建的環境變數在將來容器執行時是不存在的。其基本格式:

格式1: arg 《引數名》 [=《預設值》]

格式2: 該預設值可以在構建命令 docker build  中用 --build-arg 《引數名》=《值》 來覆蓋

volume

定義匿名卷。 其基本格式:

格式1: volume ["《路徑1>", "《路徑2>"...]

格式2: volume 《路徑》

expose

暴露埠。expose指令是宣告執行時容器所提供的埠,在啟動容器時不會在因為這個宣告而開啟埠。 其基本格式:

格式1: expose 《埠1> [《埠2>...]

workdir

指定工作目錄。其基本格式:

格式1: workdir 《工作目錄路徑》

user

指定當前使用者。user是幫助你切換到指定使用者。 其基本格式:

格式1: user 《使用者名稱》

healtcheck

健康檢查,判斷容器的狀態是否正常。 其基本格式:

格式1: healtcheck [選項] cmd 《命令》 :設定檢查容器健康狀況的命令

格式2: healtcheck none: 如果基礎映象有健康檢查指令,使用此格式可以遮蔽掉其健康檢查指令

DockerFile檔案之詳細介紹

在docker中建立映象最常用的方式,就是使用dockerfile。dockerfile是乙個docker映象的描述檔案,我們可以理解成火箭發射的a b c d 的步驟。dockerfile其內部包含了一條條的指令,每一條指令構建一層,因此每一條指令的內容,就是描述該層應當如何構建。fromnode...

Dockerfile檔案詳解

一 dockerfile檔案 二 配置檔案詳解 1.from centos 我們的docker是基於哪個基礎映象的 我們的工作目錄 3.copy metadata metadata 將本地的專案拷貝到docker內部 4,run命令 在docker內部執行一下命令,可以是安裝軟體,新建資料夾等操作 ...

Dockerfile檔案說明

此檔案用於docker映象檔案的製作 dockerfile檔案由行命令組成,以 開頭注釋行 一般分為四部分,基礎映象資訊 維護者資訊 映象操作指令和容器啟動執行指令。例如 depending on the operating system of the host machines s that wi...