【星海出品】flask 与docker

python 复制代码
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)

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

python 复制代码
 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()


菜鸟教程: https://www.runoob.com/docker/docker-hello-world.html

docker

bash 复制代码
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

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

bash 复制代码
sudo systemctl start docker

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

bash 复制代码
sudo systemctl enable docker

验证Docker安装是否成功

bash 复制代码
docker version

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

查看docker状态

bash 复制代码
 sudo docker ps

docker设置一些被指可以用于镜像加速

/etc/docker/daemon.json

bash 复制代码
 方式一:中国区官方镜像
 {
   "registry-mirrors": ["https://registry.docker-cn.com"]
 }
 ​
 方式二:网易镜像
 {
   "registry-mirrors": ["http://hub-mirror.c.163.com"]
 }
 ​
 方式三:中国科技大学镜像
 {
   "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
 }
 ​
bash 复制代码
 {
   "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"
   ]
 }

修改完成后,再重加载配置文件:sudo systemctl daemon-reload

重启动docker:sudo systemctl restart docker

检查加速器是否生效:docker info

拉取新的镜像

bash 复制代码
 docker pull imagename:tag

查找镜像

bash 复制代码
 docker search httpd

删除镜像

bash 复制代码
 docker rmi imagename
 docker rmi imageID

查看所有容器

bash 复制代码
 docker ps -a

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

bash 复制代码
 docker run -it imagename /bin/bash

参数说明:​

-i: 交互式操作。

-t: 终端

bash 复制代码
sample:
 docker run -p 8080:8080 -dit <Image> /bin/bash  

进入容器

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

启动已停止的容器

docker start containerID

停止容器

docker stop <容器 ID>

重启容器

docker restart <容器 ID>

bash 复制代码
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:/# 

通过进入容器,对容器进行修改.

对于修改成功的容器重新构建新Image

bash 复制代码
docker commit <Container ID 旧> <Image name 新>:<tag>

打包镜像Image为tar

bash 复制代码
docker save -o XXX.tar <Image name>:<tag>

载入镜像

bash 复制代码
docker load -i XXX.tar
相关推荐
西柚与蓝莓几秒前
报错:{‘csrf_token‘: [‘The CSRF token is missing.‘]}
前端·flask
姓学名生2 分钟前
李沐vscode配置+github管理+FFmpeg视频搬运+百度API添加翻译字幕
vscode·python·深度学习·ffmpeg·github·视频
黑客-雨13 分钟前
从零开始:如何用Python训练一个AI模型(超详细教程)非常详细收藏我这一篇就够了!
开发语言·人工智能·python·大模型·ai产品经理·大模型学习·大模型入门
孤独且没人爱的纸鹤26 分钟前
【机器学习】深入无监督学习分裂型层次聚类的原理、算法结构与数学基础全方位解读,深度揭示其如何在数据空间中构建层次化聚类结构
人工智能·python·深度学习·机器学习·支持向量机·ai·聚类
l1x1n030 分钟前
No.35 笔记 | Python学习之旅:基础语法与实践作业总结
笔记·python·学习
是Dream呀1 小时前
Python从0到100(八十五):神经网络-使用迁移学习完成猫狗分类
python·神经网络·迁移学习
小林熬夜学编程1 小时前
【Python】第三弹---编程基础进阶:掌握输入输出与运算符的全面指南
开发语言·python·算法
hunter2062063 小时前
用opencv生成视频流,然后用rtsp进行拉流显示
人工智能·python·opencv
旦沐已成舟4 小时前
K8S-Pod的环境变量,重启策略,数据持久化,资源限制
java·docker·kubernetes
Johaden5 小时前
EXCEL+Python搞定数据处理(第一部分:Python入门-第2章:开发环境)
开发语言·vscode·python·conda·excel