• 【星海出品】flask 与docker


    import os
    from flask import Flask, request
    from flask import Response, make_response, jsonify
    import cv2
    import base64
    import io
    import uuid
    from main import eye
    ​
    app = Flask(__name__)@app.route('/', methods=['GET', 'POST'])  # 添加路由blend
    def upload_file(): # 处理逻辑函数
        if request.method == "POST":
            result = request.form['eye']
            print("111")return result
    ​
    if __name__ == '__main__':
        # 地址需要是0.0.0.0,保证外机访问
        app.run(host="0.0.0.0", debug=True, port=8080)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    例子:注意get和post读取数据的形式不同!

     import requests
     # flask get方式
     def get():
         url = "http://127.0.0.1:8080"
         ret = requests.get(url)
         return ret.text
     ​
     # flask post方式
     def post():
         url = "http://127.0.0.1:8080"
         data = {'eye': '1'}
         
         ret = requests.post(url, data=data)return ret.text
     ​
     if __name__ == '__main__':
         post()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    在这里插入图片描述
    菜鸟教程: https://www.runoob.com/docker/docker-hello-world.html

    docker

    sudo apt-get update
    sudo apt-get upgrade
    sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    sudo apt-get update
    sudo apt-get install docker-ce
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    启动Docker 使用以下命令启动Docker服务:

    sudo systemctl start docker
    
    • 1

    设置Docker自动启动,使用以下命令设置Docker自动启动:

    sudo systemctl enable docker
    
    • 1

    验证Docker安装是否成功

    docker version
    
    • 1

    如果安装成功,您将看到Docker版本信息的输出。
    查看docker状态

     sudo docker ps
    
    • 1

    docker设置一些被指可以用于镜像加速
    /etc/docker/daemon.json

     方式一:中国区官方镜像
     {
       "registry-mirrors": ["https://registry.docker-cn.com"]
     }
     ​
     方式二:网易镜像
     {
       "registry-mirrors": ["http://hub-mirror.c.163.com"]
     }
     ​
     方式三:中国科技大学镜像
     {
       "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
     }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
     {
       "debug": true,
       "experimental": false,
       "features": {
         "buildkit": false
       },
       "insecure-registries": [],
       "registry-mirrors": [
         "http://hub-mirror.c.163.com",
         "https://docker.mirrors.ustc.edu.cn",
         "https://registry.docker-cn.com",
         "https://mirror.ccs.tencentyun.com"
       ]
     }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    修改完成后,再重加载配置文件:sudo systemctl daemon-reload
    重启动docker:sudo systemctl restart docker
    检查加速器是否生效:docker info

    拉取新的镜像

     docker pull imagename:tag
    
    • 1

    查找镜像

     docker search httpd
    
    • 1

    删除镜像

     docker rmi imagename
     docker rmi imageID
    
    • 1
    • 2

    查看所有容器

     docker ps -a
    
    • 1

    运行一个镜像,并生成一个容器,保持有一个持续进行的进程(所以加上/bin/bash,否则自动退出进程),才能保证容器被启动。-p:宿主机端口(flask的port):docker镜像声明的端口(dockerfile的EXPORT),在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式。

     docker run -it imagename /bin/bash
    
    • 1

    参数说明:​
    -i: 交互式操作。
    -t: 终端

    sample:
     docker run -p 8080:8080 -dit <Image> /bin/bash  
    
    • 1
    • 2

    进入容器

     docker attach <容器 ID>​
     注意: 如果从这个容器退出,会导致容器的停止。
     docker exec -it <容器 ID> /bin/bash​
     注意: 如果从这个容器退出,容器不会停止,推荐大家使用 docker exec。
    
    • 1
    • 2
    • 3
    • 4

    启动已停止的容器
    docker start containerID
    停止容器
    docker stop <容器 ID>
    重启容器
    docker restart <容器 ID>

    docker run :创建一个新的容器并运行一个命令
    
    语法
    docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
    OPTIONS说明:
    
    -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
    -d: 后台运行容器,并返回容器ID;
    -i: 以交互模式运行容器,通常与 -t 同时使用;
    -P: 随机端口映射,容器内部端口随机映射到主机的端口
    -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
    -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
    --name="nginx-lb": 为容器指定一个名称;
    --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
    --dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
    -h "mars": 指定容器的hostname;
    -e username="ritchie": 设置环境变量;
    --env-file=[]: 从指定文件读入环境变量;
    --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
    -m :设置容器使用内存最大值;
    --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
    --link=[]: 添加链接到另一个容器;
    --expose=[]: 开放一个端口或一组端口;
    --volume , -v: 绑定一个卷
    
    实例
    使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。
    
    docker run --name mynginx -d nginx:latest
    使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。
    
    docker run -P -d nginx:latest
    使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。
    
    docker run -p 80:80 -v /data:/data -d nginx:latest
    绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上。
    
    $ docker run -p 127.0.0.1:80:8080/tcp ubuntu bash
    使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
    
    runoob@runoob:~$ docker run -it nginx:latest /bin/bash
    root@b8573233d675:/# 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    通过进入容器,对容器进行修改.
    对于修改成功的容器重新构建新Image

    docker commit <Container ID 旧> <Image name 新>:<tag>
    
    • 1

    打包镜像Image为tar

    docker save -o XXX.tar <Image name>:<tag>
    
    • 1

    载入镜像

    docker load -i XXX.tar
    
    • 1
  • 相关阅读:
    react+ts手写cron表达式转换组件
    Skywalking Docker单机环境搭建
    每个.NET开发都应掌握的C#特性(Attribute)知识点
    【仿真】Carla介绍与基本使用 [1] (附代码 基础版)
    1043 Is It a Binary Search Tree
    eBPF Talk:变量声明的位置
    查看Android App包名,查看keystore的信息,导出公钥
    MyBatis-Plus插件
    群面经验笔记本(持续更新ing...)
    CSS位置偏移反爬虫绕过
  • 原文地址:https://blog.csdn.net/weixin_41997073/article/details/134291654