• Dockerfile使用


    Dockerfile

    Docker可以通过读取Dockerfile中的指令自动构建image。 Dockerfile是一个文本文档,文档中包含用户可以在命令行上调用以构建image的所有命令。 使用docker build 命令用户可以创建一个连续执行多个命令行指令的自动构建程序。

    使用

    docker build Path命令根据Dockerfile来构建一个镜像, Path可以是磁盘上的文件夹或是git仓库

    命令

    • FROM

      指定基础镜像,必须是第一行非注释指令

    • MAINTAINER

      指定镜像的作者信息

    • RUN

      指定镜像中运行的指令, 例如:

      你想要构建你的django应用,那么你在django中所有使用的模块,应当在镜像构建时装载,所以此时应使用

      RUN pip install -r requirements.txt

    • 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
  • 相关阅读:
    Graph 学习
    忘记 mysql 8.0 root 密码 怎么修改
    HTML字符实体(关于 ><等)
    Sqlserver 中系统表sysobjects、syscolumns以及函数object_id
    SQL Server创建索引(转)
    改善SQL语句(转)
    (转)SqlServer索引及优化详解(1)
    标签点击不返回顶部和不刷新页面方法
    c#模拟js escape方法
    获取枚举描述信息
  • 原文地址:https://www.cnblogs.com/jiaqi-666/p/11526714.html
Copyright © 2020-2023  润新知