Docker file基本教程

2018-07-26 17:35 更新

Dockerfile 是記錄了鏡像是如何被構(gòu)建出來的配置文件, 可以被 docker 直接執(zhí)行以創(chuàng)建一個(gè)鏡像. 它的樣子:

FROM ubuntu:14.04
MAINTAINER YS.Zou <>

ADD run /root/run
ADD sources.list /etc/apt/sources.list
ADD id_rsa.pub /tmp/pubkey
ADD requirements /root/requirements

RUN mkdir -p /root/.ssh && \
    cat /tmp/pubkey >> /root/.ssh/authorized_keys && \
    rm -rf /tmp/pubkey
...

CMD ["bash", "/root/run"]

把文件命名為 Dockerfile , 進(jìn)入文件所在目錄, 輸入:

docker build .

就可以開始構(gòu)建過程, 并且得到一個(gè)新的鏡像了.

Dockerfile 支持一些很簡(jiǎn)單的命令:

FROM
以哪個(gè)鏡像為基礎(chǔ)開始構(gòu)建.
MAINTAINER
作者信息.
RUN
運(yùn)行一條命令.
CMD
docker run IMAGE_ID cmd 這里的默認(rèn)命令.
ENTRYPOINT
docker run IMAGE_ID cmd 這里的默認(rèn)命令的前面部分, run 中 cmd 可以作為后續(xù)參數(shù).
EXPOSE
聲明會(huì)用到的端口.
ENV
設(shè)置環(huán)境變量
ADD
從當(dāng)前目錄復(fù)制文件到容器. 會(huì)自動(dòng)處理目錄, 壓縮包等情況.
COPY
從當(dāng)前目錄復(fù)制文件到容器. 只是單純地復(fù)制文件.
VOLUME
聲明一個(gè)數(shù)據(jù)卷, 可用于掛載.
USER
RUN 命令執(zhí)行時(shí)的用戶.
WORKDIR
RUNCMDENTRYPOINT 這些命令執(zhí)行時(shí)的當(dāng)前目錄.
ONBUILD
前綴命令, 放在上面這些命令前面, 表示生成的鏡像再次作為"基礎(chǔ)鏡像"被用于構(gòu)建時(shí), 要執(zhí)行的命令.

build 的過程, 會(huì)依次執(zhí)行上面的命令, 實(shí)際上, docker 做的事, 也就是從基礎(chǔ)鏡像啟一個(gè)容器, 然后執(zhí)行一條命令, 修改之后提交此容器為新鏡像. 以此類推, 直到所有命令都執(zhí)行完. 所以在得到最終構(gòu)建的鏡像時(shí), 會(huì)生成很多"中間鏡像". 而如果 Dockerfile 中某條命令有錯(cuò), 也是在當(dāng)前中止, 過程中的"中間鏡像"及"當(dāng)前構(gòu)建用的容器"仍然存在的.


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)