云計算核心技術(shù)Docker教程: build 命令詳解
Dockerfile是一個用來構(gòu)建鏡像的文本文件,在docker客戶端命令行中我們可以通過docker build 命令使用Dockerfile文件來創(chuàng)建鏡像。
語法示例:
docker build [OPTIONS] PATH | URL | -
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 :忽略校驗,默認開啟;
-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的大小,默認值是64M;
--ulimit :Ulimit配置。
--tag, -t: 鏡像的名字及標簽,通常 name:tag 或者 name 格式;可以在一次構(gòu)建中為一個鏡像設(shè)置多個標簽。
--network: 默認 default。在構(gòu)建期間設(shè)置RUN指令的網(wǎng)絡(luò)模式
例如,使用當前目錄的 Dockerfile 創(chuàng)建鏡像,標簽為 runoob/ubuntu:v1:
docker build -t runoob/ubuntu:v1 .
使用URL github.com/creack/docker-firefox 的 Dockerfile 創(chuàng)建鏡像:
docker build github.com/creack/docker-firefox
也可以通過 -f Dockerfile 文件的位置:
$ docker build -f /path/to/a/Dockerfile .
在 Docker 守護進程執(zhí)行 Dockerfile 中的指令前,首先會對 Dockerfile 進行語法檢查,有語法錯誤時會返回:
$ docker build -t test/myapp .
Sending build context to Docker daemon 2.048 kB
Error response from daemon: Unknown instruction: RUNCMD
以上示例的.代表本次執(zhí)行的上下文路徑,docker 在構(gòu)建鏡像有時候想要使用到本機的文件(比如復制),docker build 命令得知這個路徑后,會將路徑下的所有內(nèi)容打包。
解析:由于 docker 的運行模式是 C/S。我們本機是 C,docker 引擎是 S。實際的構(gòu)建過程是在 docker 引擎下完成的,所以這個時候無法用到我們本機的文件。這就需要把我們本機的指定目錄下的文件一起打包提供給 docker 引擎使用。
如果未說明最后一個參數(shù),那么默認上下文路徑就是 Dockerfile 所在的位置。
注意:上下文路徑下不要放無用的文件,因為會一起打包發(fā)送給 docker 引擎,如果文件過多會造成過程緩慢。