Docker 部署Streamlit项目 | Streamlit如何部署到云服务器

简介: Docker 部署Streamlit项目 | Streamlit如何部署到云服务器


前言: 关于streamlit

关于streamlit:


Docker 部署Streamlit项目 | Streamlit如何部署到云服务器

1、安装docker

  • 注:安装之前,先关闭SELINUX服务
    SELINUX是CentOS系统捆绑的安全服务程序,因为安全策略太过于严格,所以建议关闭这项服务
    修改/etc/selinux/config文件,设置SELINUX=disabled
vi /etc/selinux/config
  • 将 SELINUX=enforcing 改为 SELINUX=disabled

安装Docker服务,-y代表默认安装

yum install docker -y

方便做法:直接宝塔面板软件商店安装

注:docker常用命令

service docker start # 启动docker服务
service docker stop # 停止docker服务
service docker restart # 重启docker服务

2、拉取python镜像

2.1、什么是DockerHub?

  • DockerHub是Docker公共镜像仓库,为用户提供了大量的镜像文件
    https://hub.docker.com/
    由于国内网络访问DockerHub很慢,无法下载镜像文件,我们可以使用Docker加速器

2.2、配置docker加速器

DaoCloud加速器采用自主研发的智能路由及缓存技术并引入了先进的协议层优化,极大提升拉取镜像的速度和体验

(配置配置docker加速器的时候可以先关闭docker服务然后再重启)

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

注意:修改/etc/docker/daemon.json文件,去掉结尾的逗号

2.3、拉取python镜像

docker pull python:3.6

3.6指的是是Python的版本

3. 创建python容器

3.1、首先创建网段

默认情况下,Docker环境会给容器分配动态的IP地址,这就导致下次启动容器的时候,IP地址就改变了

我们可以单独创建一个Docker内部的网段(172.20.0.X)

docker network create --subnet=172.20.0.0/16 pynet
  • /16表示创建出来的网段可以创建65534个IP地址;
  • 如果创建失败可能是因为网段已经被占用,可以试试其他的网段;

3.2、在创建的网段范围内创建python容器

docker run -it -d --name=StreamlitHelloWorld -p 5002:8501 -v /www/wwwroot/experiment/StreamlitHelloWorld:/root/StreamlitHelloWorld --net pynet --ip 172.20.0.3 python:3.6 bash

注:

  • **docker run :**创建一个新的容器并运行一个命令
  • -i: 以交互模式运行容器,通常与 -t 同时使用;
  • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
  • -d: 后台运行容器,并返回容器ID;
  • –name=“nginx-lb”: 为容器指定一个名称;
  • -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
  • –volume , -v: 绑定一个卷(目录映射)(/www/wwwroot/experiment/exp2是我的项目文件所在的真实位置;/root/project是docker内文件位置)
  • –net: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
  • -ip:指定IP地址(虚拟);在pynet网段所在的范围内创建;(172.20.0.1是网关地址,不能使用,172.20.0.2以及之后的可以使用)
  • python:3.6 指定使用的镜像

4、启动服务streamlit服务

进取容器内部之后,转到项目启动文件所在目录,输入

streamlit run helloworld.py

输入网址:http://101.32.183.14:5002/ 访问(注意端口映射到了5002)

  • 注意:此时直接按下“Ctrl+c”退出运行的话,就是结束了python程序,然后在无法访问了;

稳妥的方法是:

加上nohup,使用命令:

nohup streamlit run helloworld.py

然后直接关上终端窗口即可;

5、docker常用命令

docker images # 列出本地镜像
docker ps -a # 查看所有的容器
docker start <容器 ID> # 启动容器
docker stop <容器 ID> # 停止容器
docker restart <容器 ID> # 停止的容器可以通过 docker restart 重启:
docker exec -it nlp bash # 进入"nlp"容器
docker network rm pynet # 删除pynet网段

6、可能的报错:

创建网段的时候:

ERROR response from daemon: Pool overlaps with other one on this address space

  • 在docker中创建networks的时候有时候会报ERROR: Pool overlaps with other one on this address space的错误,这是因为目标网段已经存在的原因,通常这发生在将要创建的networks手动指定了subnet网段地址的时候。| 这时有两个选择,一是查看已存在的网段是否有容器正在使用,如果没再用了可以删除该网段对应的网卡,二是修改目标的subnet网段地址。
  • 注意:默认情况下,docker默认创建的网段为172.17.0.X,因此创建的容器都是放在这个网段之中。
  • 如果报错,可能是之前创建的容器已经使用了这个网段,那就另外选择其他的网段
相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
并行计算 前端开发 异构计算
告别服务器繁忙,云上部署DeepSeek
本文以 DeepSeek-R1-Distill-Qwen-32B-FP8 为例,向您介绍如何在GPU实例上使用容器来部署量化的 DeepSeek-R1 蒸馏模型。
|
3天前
|
消息中间件 监控 RocketMQ
Docker部署RocketMQ5.2.0集群
本文详细介绍了如何使用Docker和Docker Compose部署RocketMQ 5.2.0集群。通过创建配置文件、启动集群和验证容器状态,您可以快速搭建起一个RocketMQ集群环境。希望本文能够帮助您更好地理解和应用RocketMQ,提高消息中间件的部署和管理效率。
144 91
|
4天前
|
存储 NoSQL Redis
Docker 部署 Redis
在使用 Docker 部署 Redis 时,为实现数据持久化,需正确挂载容器内的数据目录到宿主机。推荐命令如下: ``` docker run -d --name redis -v /mnt/data/redis:/data -p 6379:6379 redis ``` 该命令将宿主机的 `/mnt/data/redis` 目录挂载到容器的 `/data` 目录,确保 Redis 数据持久化。此路径更通用,适合大多数场景。避免使用不匹配的挂载路径,如 `/var/lib/redis` 或 `/mnt/data/redis` 到非默认目录,以防止数据无法正确持久化。
|
6天前
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
Node.js 是一种高效的 JavaScript 运行环境,基于 Chrome V8 引擎,支持在服务器端运行 JavaScript 代码。本文介绍如何在阿里云上一键部署 Node.js 环境,无需繁琐配置,轻松上手。前提条件包括 ECS 实例运行中且操作系统为 CentOS、Ubuntu 等。功能特点为一键安装和稳定性好,支持常用 LTS 版本。安装步骤简单:登录阿里云控制台,选择扩展程序管理页面,安装 Node.js 扩展,选择实例和版本,等待创建完成并验证安装成功。通过阿里云的公共扩展,初学者和经验丰富的开发者都能快速进入开发状态,开启高效开发之旅。
|
8天前
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
|
5天前
|
机器学习/深度学习 人工智能 开发者
DeepSeek服务器繁忙?拒绝稍后再试!基于阿里云PAI实现0代码一键部署DeepSeek-V3和DeepSeek-R1大模型
阿里云PAI平台支持零代码一键部署DeepSeek-V3和DeepSeek-R1大模型,用户可轻松实现从训练到部署再到推理的全流程。通过PAI Model Gallery,开发者只需简单几步即可完成模型部署,享受高效便捷的AI开发体验。具体步骤包括开通PAI服务、进入控制台选择模型、一键部署并获取调用信息。整个过程无需编写代码,极大简化了模型应用的门槛。
117 7
|
1月前
|
数据库 Docker 容器
docker容器为啥会开机自启动
通过配置适当的重启策略,Docker容器可以在主机系统重启后自动启动。这对于保持关键服务的高可用性和自动恢复能力非常有用。选择适合的重启策略(如 `always`或 `unless-stopped`),可以确保应用程序在各种情况下保持运行。理解并配置这些策略是确保Docker容器化应用可靠性的关键。
224 93
|
4天前
|
网络协议 API Docker
Docker+consul容器服务的更新与发现
通过本文的介绍,我们详细探讨了如何结合Docker和Consul来实现容器服务的更新与发现。通过Consul的服务注册和发现功能,可以高效地管理和监控容器化服务,确保系统的高可用性和可扩展性。希望本文能帮助您在实际项目中更好地应用Docker和Consul,提高系统的可靠性和管理效率。
37 23
|
4天前
|
Ubuntu API 网络虚拟化
ubuntu22 编译安装docker,和docker容器方式安装 deepseek
本脚本适用于Ubuntu 22.04,主要功能包括编译安装Docker和安装DeepSeek模型。首先通过Apt源配置安装Docker,确保网络稳定(建议使用VPN)。接着下载并配置Docker二进制文件,创建Docker用户组并设置守护进程。随后拉取Debian 12镜像,安装系统必备工具,配置Ollama模型管理器,并最终部署和运行DeepSeek模型,提供API接口进行交互测试。
91 15