1. 程式人生 > >docker系列之file基本操作

docker系列之file基本操作

IV 情況 文件命名 數據 ... strong ID 支持 默認

dockerfile基礎操作

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

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 這裏的默認命令的前面部分, runcmd 可以作為後續參數.
EXPOSE
聲明會用到的端口.
ENV
設置環境變量
ADD
從當前目錄復制文件到容器. 會自動處理目錄, 壓縮包等情況.
COPY
從當前目錄復制文件到容器. 只是單純地復制文件.
VOLUME
聲明一個數據卷, 可用於掛載.
USER
RUN 命令執行時的用戶.
WORKDIR
RUN, CMD, ENTRYPOINT 這些命令執行時的當前目錄.
ONBUILD
前綴命令, 放在上面這些命令前面, 表示生成的鏡像再次作為"基礎鏡像"被用於構建時, 要執行的命令.

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

中某條命令有錯, 也是在當前中止, 過程中的"中間鏡像"及"當前構建用的容器"仍然存在的.

docker系列之file基本操作