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 使用離型劑時,首先要...