Dockerfile 是一個(gè)用來構(gòu)建鏡像的文本文件,文本內(nèi)容包含了一條條構(gòu)建鏡像所需的指令和說明。
1.指令說明
- FROM,構(gòu)建鏡像基于哪個(gè)鏡像
- MAINTAINER,鏡像維護(hù)者姓名或郵箱地址
- RUN,構(gòu)建鏡像時(shí)運(yùn)行的指令
- CMD,運(yùn)行容器時(shí)執(zhí)行的shell環(huán)境
- VOLUME,指定容器掛載點(diǎn)到宿主機(jī)自動(dòng)生成的目錄或其他容器
- USER,為RUN、CMD、和 ENTRYPOINT 執(zhí)行命令指定運(yùn)行用戶
- WORKDIR,為 RUN、CMD、ENTRYPOINT、COPY 和 ADD 設(shè)置工作目錄,就是切換目錄
- HEALTHCHECH,健康檢查
- ARG,構(gòu)建時(shí)指定的一些參數(shù)
- EXPOSE,聲明容器的服務(wù)端口(僅僅是聲明)
- ENV,設(shè)置容器環(huán)境變量
- ADD,拷貝文件或目錄到容器中,如果是URL或壓縮包便會(huì)自動(dòng)下載或自動(dòng)解壓
- COPY,拷貝文件或目錄到容器中,跟ADD類似,但不具備自動(dòng)下載或解壓的功能
- ENTRYPOINT,運(yùn)行容器時(shí)執(zhí)行的shell命令
2.關(guān)鍵點(diǎn)
RUN 執(zhí)指令每執(zhí)行一次都會(huì)在 docker 上新建一層。所以過多無意義的層,會(huì)造成鏡像膨脹過大,大部分命令可以簡化如下:
RUN yum -y install wget
&& wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
&& tar -xvf redis.tar.gz
上下文路徑,是指 docker 在構(gòu)建鏡像,有時(shí)候想要使用到本機(jī)的文件(比如復(fù)制),docker build 命令得知這個(gè)路徑后,會(huì)將路徑下的所有內(nèi)容打包。
上下文路徑
由于 docker 的運(yùn)行模式是 C/S。我們本機(jī)是 C,docker 引擎是 S。實(shí)際的構(gòu)建過程是在 docker 引擎下完成的,所以這個(gè)時(shí)候無法用到我們本機(jī)的文件。這就需要把我們本機(jī)的指定目錄下的文件一起打包提供給 docker 引擎使用。
如果未說明最后一個(gè)參數(shù),那么默認(rèn)上下文路徑就是 Dockerfile 所在的位置。
Compose
Compose 是用于定義和運(yùn)行多容器 Docker 應(yīng)用程序的工具。通過 Compose,您可以使用 YML 文件來配置應(yīng)用程序需要的所有服務(wù)。然后,使用一個(gè)命令,就可以從 YML 文件配置中創(chuàng)建并啟動(dòng)所有服務(wù)。
相關(guān)說明:https://www.runoob.com/docker/docker-compose.html