Docker能夠經過讀取Dockerfile中的指令自動構建image。 Dockerfile是一個文本文檔,文檔中包含用戶能夠在命令行上調用以構建image的全部命令。 使用docker build 命令用戶能夠建立一個連續執行多個命令行指令的自動構建程序。python
docker build Path
命令根據Dockerfile來構建一個鏡像, Path能夠是磁盤上的文件夾或是git倉庫git
FROMdocker
指定基礎鏡像,必須是第一行非註釋指令shell
MAINTAINERdjango
指定鏡像的做者信息bash
RUNui
指定鏡像中運行的指令, 例如:spa
你想要構建你的django應用,那麼你在django中全部使用的模塊,應當在鏡像構建時裝載,因此此時應使用命令行
RUN pip install -r requirements.txtcode
EXPOSE
指定一個或多個端口
可是一樣須要在RUN命令須要指定端口的映射
CMD
指定容器運行中的默認命令, docker run指令會將其覆蓋
容器運行時執行舉例: 當容器運行時你應當啓動你的django程序,此時應使用:
CMD python manage.py runserver 0.0.0.0:8000
ENTRYPOINT
與CMD相似可是不會被docker run 時指定的命令覆蓋, 若是想覆蓋須要添加指令
ADD
將文件或目錄複製到Dockerfile建立的鏡像中
包含相似的解壓功能
COPY
將文件或目錄複製到Dockerfile建立的鏡像中
單純的複製文件
VOLUME
掛載,你們知道容器有隔離的做用,你能夠把系統和容器想象爲兩個互不干擾的環境,那麼咱們要想要將兩個環境中的某一個文件進行共通,那麼就用到此命令
VOLUME /opt/logs /var/logs
上面命令表示將系統的/opt/logs文件夾掛載到容器內的/var/logs文件夾上,這就意味在系統/opt/logs的文件夾發生改變,相應的容器內的/var/logs文件夾當即會讀取到發生的變化;反之亦然
WORKDIR
在容器內部建立工做目錄, 絕對目錄,咱們在容器內的文件路徑就均可以依照此處的WORKDIR來使用相對路徑
ENV
設置環境變量
USER
指定運行鏡像的用戶身份
ONBUILD
爲鏡像添加觸發器,當被用於子鏡像時,將會觸發
shell和exec模式
RUN CMD ENTRYPOINT都支持這兩種命令模式
e.g:
FROM python:3 ENV PYTHONUNBUFFERED 1 RUN mkdir /code WORKDIR /code COPY requirements.txt /code/ RUN pip install -r requirements.txt COPY . /code/ CMD python manage.py runserver 0.0.0.0:8000 docker build . 基礎鏡像使用python,tag爲3 設置環境變量PYTHONUNBUFFERED值爲1 執行命令: mkdir /code 將容器內的/code目錄設置爲工做目錄 將當前目錄下的requirements.txt文件拷貝到容器內的/code下 執行命令: pip install -r requirements.txt 將當前目錄下的全部文件拷貝到容器內的/code下 docker run image 執行命令: python manage.py runserver 0.0.0.0:8000