dockerfile 使用方法

2021-09-25 09:45:56 字數 4067 閱讀 9663

dockerfile是乙個文字格式的配置檔案,使用者可以使用dockerfile快速建立自定義的映象。

一、dockerfile基本結構 

dockerfile由一行行命令語句組成,並且支援以#開頭的注釋行。 

一般而言,dockerfile分為 四部分

(1)dockerfile之nginx示例

在centos父映象基礎上安裝nginx、apache2、openssh-server

# nginx

# 第一行必須指定基於的映象基礎

from centos

# 維護者資訊

maintainer hongxue hongxue@***x.com

# 映象的操作指令

run yum -y install nginx apache2 openssh-server

(2)dockerfile之firefox和vnc示例

在centos父映象基礎上,安裝firefox和vnc軟體,啟動後,使用者可以通過5900埠通過vnc方式使用firefox

# firefox over vnc

from centos

# install vnc,xvfb in order to create a 'fake' display and firefox

run yum -y install x11vnc xvfb firefox

run mkdir /.vnc

# setup a password

run x11vnc -storepasswd hahaha ~/.vnc/passwd

#autostart firefox (might not be the best way, but it does the trick)

run bash -c 'echo "firefox" >> /.bashrc'

expose 5900

cmd ["x11vnc","-forever","-usepw","-create"]

二、指令

指令的一般格式為instruction arguments,指令包括from、maintainer、run等

(1) from

格式為:

from 或 from :

第一條指令必須為from指令。並且,如果在同乙個dockerfile中建立多個映象時,以使用多個from指令(每個映象一次)

(2) maintainer

格式為:

maintainer

指定維護著資訊

(3) run

格式為:

run run ["executable","param1","param2"]

前者將在shell終端中執行命令,即/bin/sh -c;後者則使用exec執行。指定使用其他終端可以通過第二種方式實現,例如run [「/bin/bash」, 「-c」,」echo hello」] 

每條run指令將在當前映象基礎上執行指定命令,並提交為新的映象。

(4) cmd

支援三種格式:

cmd ["executable","param1","param2"]使用exec執行,推薦方式。

cmd command param1 prarm2 在/bin/sh中執行,提供給需要互動的應用

cmd ["prarm1","param2"]提供給entrypoint的預設引數

指定啟動容器時執行的命令,每個dockerfile只能有一條cmd命令。如果指定了多條命令,只有最後一條會被執行。 

如果使用者啟動容器的時候指定了執行的命令,則會覆蓋掉cmd指定的命令。

(5) expose

格式為:

expose [...]

例如:expose 20 80 8443

告訴docker伺服器容器暴露的埠號,供互聯系統使用。在啟動容器時需要通過-p,docker主機會自動分配乙個埠**到指定的埠;使用-p,則可以具體指定哪個本地埠對映過來。

(6) env

格式為:

env 指定乙個環境變數,會被後續run指令使用,並在容器執行時保持

(7) add

格式為:

add

該命令將複製指定』src』的到容器中的』dest』。其中』src』可以是dockerfile所在目錄的乙個相對路徑(檔案或目錄);也可以是乙個url;還可以是乙個tar檔案

(8) copy

格式為:

copy

複製本地主機的』src』為容器中的』dest』,目標路徑不存在時,會自動建立。 

當使用本地目錄為源目錄時,推薦使用copy

(9) entrypoint

有兩種格式:

entrypoint ["executable","param1","param2"]

entrypoing command param1 param2 (shell中執行)

配置容器啟動後執行的命令,並且不可被docker run 提供的引數覆蓋。 

每個dockerfile中只能有乙個entrypoint,當指定多個entrypoint時,只有最後乙個生效。

(10) volume

格式為:

volume ["/data"]

建立乙個可以從本地主機或其他容器掛載的掛載點,一般用來存放資料庫和需要保持的資料等。

(11) user

格式為:

user daemon

指定執行容器時的使用者名稱或uid,後續的run也會使用指定使用者 

當服務不需要管理員許可權時,可以通過該命令指定執行使用者。並且可以在之前建立所需要的使用者,例如: 

run groupadd -r postgres && useradd -r -g postgres postgres

(12) workdir

格式為:

workdir /path/to/workdir

為後續的run、cmd、entrypoint指令配置工作目錄 

可以使用多個workdir指令,後續命令如果引數是相對路徑,則會基於之前命令指定的路徑。

(13) onbuild

格式為:

onbuild [instruction]

配置當所建立的映象作為其他新建立映象的基礎映象時,所執行的操作指令

三、建立映象 

編寫完成dockerfile之後,可以通過docker build命令來建立映象。 

基本的格式為 docker build [選項]路徑,該命令將讀取指定路徑下的dockerfile,並將該路徑下的所有內容傳送給docker服務端,由服務端來建立映象。因此一般建議放置dockerfile的目錄為空目錄

(1) 檢視目錄下dockerfile是否存在

[root@docker ~]#cd /dockerfile/

[root@docker dockerfile]#ls

dockerfile

(2) 執行命令進行構建

[root@docker dockerfile]#docker build -t nginx_image .

上條命令中build為構建映象,而引數t則指定映象name,.則為dockerfile的路徑

下圖可以看到構建成功

dockerfile 使用方法

dockerfile是乙個文字格式的配置檔案,使用者可以使用dockerfile快速建立自定義的映象。一 dockerfile基本結構 dockerfile由一行行命令語句組成,並且支援以 開頭的注釋行。一般而言,dockerfile分為 四部分 1 dockerfile之nginx示例 在cent...

pythonpip使用方法 pip使用方法整理

匯出專案已安裝的pip包 pip list 檢視專案中安裝的包 pip freeze requirements.txt 將專案中所用到的第三方庫輸出到requirements.txt中 pip install 版本號 pip install i 本次使用清華源進行安裝 離線安裝第三方庫 一鍵安裝整個...

使用方法 離型劑使用方法

1 使用離型劑前必須確保模具乾淨,無粉塵 蠟垢 樹脂垢 油汙等殘留物質。可以使用專用的模具潔模劑進行清洗,不可用其他液體清洗,以免清洗不乾淨或損壞模具。另外,如果您的模具是新的,在清洗乾淨後,務必要對模具進行初步處理,用離型劑在模具表面噴 刷塗5 6次,之後方可正常投入生產。2 使用離型劑時,首先要...