1. 程式人生 > 實用技巧 >Docker實戰(三)--Dockerfile

Docker實戰(三)--Dockerfile

1.什麼是dockerfile

個人理解Dockerfile其實應該叫 image file,因為Dockerfile 其實是一個用來構建映象的文字檔案

FROM centos
MAINTAINER zengyin<[email protected]>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
RUN yum -y install nginx

VOLUME /etc/nginx/
EXPOSE 80

CMD echo $MYPATH
CMD echo "....end....
" CMD /bin/bash

以上檔案其實是以centos為基礎映象,安裝vim、nginx、net-tools,並將nginx以mounts的方式對映到本地隨機生成的路徑,暴露80埠

2.常用指令

  • FROM:定製的映象都是基於 FROM 的映象,上面後續的操作都是基於 centos。

  • MAINTAINER:作者(維護者)

  • WORKDIR:指定進入容器後的預設路徑

  • RUN:用於安裝軟體包

  • COPY:複製指令,從上下文目錄中複製檔案或者目錄到容器裡指定路徑

  • ADD:ADD 指令和 COPY 的使用格式一致,會自動複製並解壓(同樣需求下,官方推薦使用 COPY)

  • CMD:用於執行程式,容器啟動後,預設

    執行的命令。“預設”意味著:如果docker run 沒有指定任何的執行命令或者dockerfile中也沒有ENTRYPOINT時,執行

  • ENTRYPOINT正式的容器啟動後的執行體即:如果docker run後有東西,那麼後面的全部會被作為ENTRYPOINT的引數;如果run後面沒有,但CMD後面有,那麼CMD的內容會作為ENTRYPOINT的引數;如果要在docker run時覆蓋ENTRYPOINT,使用--entrypoint即可

  • ENV:設定環境變數,那麼在後續的指令中,就可以使用這個環境變數

  • ARG:構建引數,與 ENV 作用一至。不過作用域不一樣。ARG 設定的環境變數僅對 Dockerfile 內有效

  • VOLUME:定義匿名資料卷。在啟動容器時忘記掛載資料卷,會自動掛載到匿名卷。

  • EXPOSE:僅僅只是宣告埠

3. 構建映象

docker build -f dockerfile2 -t test/centos:3.0 .
  • dockerfile2為Dockerfile的檔名
  • test/centos為映象名
  • 3.0為映象tag
  • .為映象儲存在當前路徑