Docker file基本教程

2018-07-26 17:35 更新

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

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 , 進入文件所在目錄, 輸入:

docker build .

就可以開始構建過程, 并且得到一個新的鏡像了.

Dockerfile 支持一些很簡單的命令:

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

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


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號