美文网首页
Docker 构建镜像

Docker 构建镜像

作者: janlle | 来源:发表于2019-11-25 16:40 被阅读0次

    Docker 构建镜像

    环境

    Docker: Docker version 19.03.4, build 9013bf583a
    System: CentOS Linux release 8.0.1905 (Core)
    Python: Python 3.6.8
    Flask: Flask 1.0.3
    Gunicorn: gunicorn 19.9.0
    
    

    Dockerfile 指令详解

    • FROM <image> or FROM <image>:<tag>

    FROM 指令用于指定其后构建新镜像所使用的基础镜像。FROM 指令必是 Dockerfile 文件中的首条命令,启动构建流程后,Docker 将会基于该镜像构建新镜像,FROM 后的命令也会基于这个基础镜像。

    • COPY <源路径> <目标路径>

    指令将从构建上下文目录中 <源路径> 的文件/目录复制到新的一层的镜像内的 <目标路径> 位置。比如: COPY package.json /app

    • ADD <源路径> <目标路径>

    ADD 指令和 COPY 的格式和性质基本一致。但是在 COPY 基础上增加了一些功能。比如 <源路径> 可以是一个 URL

    • CMD <命令> or CMD ["可执行文件", "参数1", "参数2"...]

    CMD用于指定在容器启动时所要执行的命令

    • ENV <key> <value> or ENV <key1>=<value1> <key2>=<value2>...

    主要用于设置程序运行时需要的参数

    • EXPOSE <端口1> [<端口2>...]

    EXPOSE 指令是声明运行时容器提供服务端口,这只是一个声明

    • WORKDIR <工作目录路径>

    使用 WORKDIR 指令可以来指定工作目录(或者称为当前目录),以后各层的当前目录就被改为指定的目录,如该目录不存在,WORKDIR 会帮你建立目录。

    • USER <用户名>[:<用户组>]

    USER 指令和 WORKDIR 相似,都是改变环境状态并影响以后的层。WORKDIR 是改变工作目录,USER 则是改变之后层的执行 RUN, CMD 以及 ENTRYPOINT 这类命令的身份。

    • RUN <命令行命令> or RUN ["可执行文件", "参数1", "参数2"]

    用于执行后面跟着的命令行命令.

    • VOLUME <路径> or VOLUME ["<路径1>", "<路径2>"...]

    定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷,可以避免重要的数据,因容器重启而丢失。

    构建 Docker 镜像

    Dockerfile

    # 基于 Python:3.6 基础镜像
    FROM python:3.6
    # Docker 的工作目录
    WORKDIR /app
    # 复制文件到工作目录
    ADD . /app
    # 安装 Python 的依赖
    RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
    # 设置运行的必要参数
    ENV env=dev
    # 程序启动的命令
    CMD ["gunicorn", "manager:app", "-c", "run.ini"]
    
    

    application.py

    # coding:utf-8
    
    from flask import Flask
    
    app = Flask(__name__)
    
    
    @app.route('/index')
    def index():
        return 'Hello docker'
    
    
    if __name__ == '__main__':
        app.run(debug=True)
    
    

    run.ini

    workers = 5
    threads = 4
    daemon = 'false'
    worker_class = "gevent"
    bind = "0.0.0.0:8000"
    
    

    requirements.txt

    gunicorn
    gevent
    flask
    

    构建镜像

    
    # docker build -t <tag>:<version> <dir>
    docker build -t gunicron:v1.0.0 .
    

    创建 Docker 容器

    docker run -d --name gunicron-flask -p 8084:8084 gunicron

    Docker 容器操作

    docker [start | stop | restart] gunicorn-flask

    相关文章

      网友评论

          本文标题:Docker 构建镜像

          本文链接:https://www.haomeiwen.com/subject/vfsjwctx.html