DockerFile文件是用來初始化服務(wù)器鏡像,并生成一個新的鏡像,在編寫完DockerFile了以后,可以使用如下命令生成鏡像
docker build [OPTIONS] PATH
OPTIONS說明:
--build-arg=[] :設(shè)置鏡像創(chuàng)建時的變量乒裆;
--cpu-shares :設(shè)置 cpu 使用權(quán)重套利;
--cpu-period :限制 CPU CFS周期;
--cpu-quota :限制 CPU CFS配額鹤耍;
--cpuset-cpus :指定使用的CPU id肉迫;
--cpuset-mems :指定使用的內(nèi)存 id;
--disable-content-trust :忽略校驗(yàn)稿黄,默認(rèn)開啟喊衫;
-f :指定要使用的Dockerfile路徑;
--force-rm :設(shè)置鏡像過程中刪除中間容器杆怕;
--isolation :使用容器隔離技術(shù)族购;
--label=[] :設(shè)置鏡像使用的元數(shù)據(jù);
-m :設(shè)置內(nèi)存最大值陵珍;
--memory-swap :設(shè)置Swap的最大值為內(nèi)存+swap寝杖,"-1"表示不限swap;
--no-cache :創(chuàng)建鏡像的過程不使用緩存互纯;
--pull :嘗試去更新鏡像的新版本
--quiet, -q :安靜模式瑟幕,成功后只輸出鏡像 ID;
--rm :設(shè)置鏡像成功后刪除中間容器留潦;
--shm-size :設(shè)置/dev/shm的大小只盹,默認(rèn)值是64M;
--ulimit :Ulimit配置兔院。
--tag, -t: 鏡像的名字及標(biāo)簽殖卑,通常 name:tag 或者 name 格式;可以在一次構(gòu)建中為一個鏡像設(shè)置多個標(biāo)簽秆乳。
--network: 默認(rèn) default懦鼠。在構(gòu)建期間設(shè)置RUN指令的網(wǎng)絡(luò)模式
- 示例
docker build ./ -t ubuntu/apicall:1.0
DockerFile 命令
FROM
FROM 是選擇需要操作的基礎(chǔ)鏡像,若鏡像不存在docker將會去鏡像倉庫下拉鏡像
- 示例
FROM Ubuntu
ADD
ADD 命令有兩個參數(shù)钻哩,源和目標(biāo)。它的基本作用是從源系統(tǒng)的文件系統(tǒng)上復(fù)制文件到目標(biāo)容器的文件系統(tǒng)肛冶。如果源是一個URL街氢,那該URL的內(nèi)容將被下載并復(fù)制到容器中。一般不建議使用此命令,盡量使用COPY命令
- 示例
ADD http://xxx.com/a.txt /home/
CMD
和RUN命令相似睦袖,CMD可以用于執(zhí)行特定的命令珊肃。和RUN不同的是,這些命令不是在鏡像構(gòu)建的過程中執(zhí)行的馅笙,而是在用鏡像構(gòu)建容器后被調(diào)用伦乔。此命令一般用來啟動服務(wù),但是此命令可能會被容器啟動時輸入的run命令覆蓋.而且一個dockerfile文件中只可以有一個這樣的命令.
- 示例
COM bash start.sh
ENTRYPOINT
配置容器啟動后執(zhí)行的命令,并且不可被 docker run 提供的參數(shù)覆蓋,每個 Dockerfile 中只能有一個 ENTRYPOINT董习,當(dāng)指定多個時烈和,只有最后一個起效。CMD或者docker run后面的參數(shù)將會拼接在ENTRYPOINT參數(shù)后面執(zhí)行
- 示例:
CMD "hello docker"
ENTRYPOINT echo
等價于執(zhí)行:echo "hello docker"
ENV
配置環(huán)境變量,此環(huán)境變量可以在容器運(yùn)行中的服務(wù)讀取到.
- 示例:
ENV SERVER_WORKS 4
EXPOSE
EXPOSE用來指定端口皿淋,使容器內(nèi)的應(yīng)用可以通過端口和外界交互招刹。
- 示例:
EXPOSE 8080
MAINTAINER
聲明作者,建議這個命令放在Dockerfile的起始部分,雖然理論上它可以放置于Dockerfile的任意位置窝趣。這個命令用于聲明作者疯暑,并應(yīng)該放在FROM的后面。
- 示例:
MAINTAINER panso
RUN
RUN命令是Dockerfile執(zhí)行命令的核心部分哑舒。它接受命令作為參數(shù)并用于創(chuàng)建鏡像妇拯。不像CMD命令,RUN命令用于創(chuàng)建鏡像(在之前commit的層之上形成新的層)
- 示例:
RUN apt-get update
USER
USER命令用于設(shè)置運(yùn)行容器的UID洗鸵。
- 示例:
USER 751
VOLUME
VOLUME命令用于讓你的容器訪問宿主機(jī)上的目錄越锈。
- 示例:
VOLUME ["/dir_1", "/dir_2" ..]
WORKDIR
WORKDIR命令用于設(shè)置CMD指明的命令的運(yùn)行目錄。
- 示例
WORKDIR /home
COPY
COPY命令用于將宿主主機(jī)的目錄拷貝到目標(biāo)容器中,每次執(zhí)行時,當(dāng)文件發(fā)生改動,此命令將會重新執(zhí)行
- COPY so/ /home/so/