Dockerfile 是一個用來構(gòu)建鏡像的文本文件,文本內(nèi)容包含了一條條構(gòu)建鏡像所需的指令和說明。
成都創(chuàng)新互聯(lián)長期為成百上千客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為江口企業(yè)提供專業(yè)的成都做網(wǎng)站、網(wǎng)站設(shè)計,江口網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。以定制一個 nginx 鏡像為例(構(gòu)建好的鏡像內(nèi)會有一個 /usr/share/nginx/html/index.html 文件)
在一個空目錄下,新建一個名為 Dockerfile 文件,并在文件內(nèi)添加以下內(nèi)容:
FROM nginx
RUN echo \'這是一個本地構(gòu)建的nginx鏡像\' > /usr/share/nginx/html/index.html
FROM:定制的鏡像都是基于 FROM 的鏡像,這里的 nginx 就是定制需要的基礎(chǔ)鏡像。后續(xù)的操作都是基于 nginx。
RUN:用于執(zhí)行后面跟著的命令行命令。有以下倆種格式:
shell 格式:
RUN <命令行命令>
# <命令行命令> 等同于,在終端操作的 shell 命令。
或者exec 格式:
RUN [可執(zhí)行文件, 參數(shù)1, 參數(shù)2]
# 例如:
# RUN [./test.php, dev, offline] 等價于 RUN ./test.php dev offline
在 Dockerfile 文件的存放目錄下,執(zhí)行構(gòu)建動作。
以下示例,通過目錄下的 Dockerfile 構(gòu)建一個 nginx:test(鏡像名稱:鏡像標(biāo)簽)。
# docker build -t nginx:test .
.表示上下文路徑
上下文路徑,是指 docker 在構(gòu)建鏡像,有時候想要使用到本機的文件(比如復(fù)制),docker build 命令得知這個路徑后,會將路徑下的所有內(nèi)容打包。
解析:由于 docker 的運行模式是 C/S。我們本機是 C,docker 引擎是 S。實際的構(gòu)建過程是在 docker 引擎下完成的,所以這個時候無法用到我們本機的文件。這就需要把我們本機的指定目錄下的文件一起打包提供給 docker 引擎使用。
如果未說明最后一個參數(shù),那么默認(rèn)上下文路徑就是 Dockerfile 所在的位置。
注意:上下文路徑下不要放無用的文件,因為會一起打包發(fā)送給 docker 引擎,如果文件過多會造成過程緩慢。
相關(guān)閱讀:
云計算核心技術(shù)Docker教程: Docker 容器連接
云計算核心技術(shù)Docker教程: Docker 容器互聯(lián)
云計算核心技術(shù)Docker教程: Docker 倉庫管理