Dockerfile使用

Dockerfile

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都支持這兩種命令模式

    • shell模式 RUN /bin/bash -c 'echo hello'
    • exec模式 RUN ["/bin/bash", "-c", "echo hello"]

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
相關文章
相關標籤/搜索