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
相关文章
相关标签/搜索