云計算核心技術(shù)Docker教程: Dockerfile文件使用
Dockerfile 是一個用來構(gòu)建鏡像的文本文件,文本內(nèi)容包含了一條條構(gòu)建鏡像所需的指令和說明。
以定制一個 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 就是定制需要的基礎鏡像。后續(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(鏡像名稱:鏡像標簽)。
# docker build -t nginx:test .
.表示上下文路徑
上下文路徑,是指 docker 在構(gòu)建鏡像,有時候想要使用到本機的文件(比如復制),docker build 命令得知這個路徑后,會將路徑下的所有內(nèi)容打包。
解析:由于 docker 的運行模式是 C/S。我們本機是 C,docker 引擎是 S。實際的構(gòu)建過程是在 docker 引擎下完成的,所以這個時候無法用到我們本機的文件。這就需要把我們本機的指定目錄下的文件一起打包提供給 docker 引擎使用。
如果未說明最后一個參數(shù),那么默認上下文路徑就是 Dockerfile 所在的位置。
注意:上下文路徑下不要放無用的文件,因為會一起打包發(fā)送給 docker 引擎,如果文件過多會造成過程緩慢。
相關(guān)閱讀:
云計算核心技術(shù)Docker教程: Docker 容器連接
云計算核心技術(shù)Docker教程: Docker 容器互聯(lián)
云計算核心技術(shù)Docker教程: Docker 倉庫管理