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