当前位置: 首页 > news >正文

Ubuntu安装Docker部署Python Flask Web应用

一、Ubuntu安装Docker

下面是具体的步骤:
1.准备条件:安装前先卸载操作系统默认安装的docker,再安装必要支持。

#安装前先卸载操作系统默认安装的docker,
sudo apt-get remove docker docker-engine docker.io containerd runc#安装必要支持
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release

2.准备安装:设置阿里源,因为访问官方源会超时。

# 阿里源(推荐使用阿里的gpg KEY)
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg#添加阿里apt源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null#更新源
sudo apt update
sudo apt-get update

3.安装Docker

#安装最新版本的Docker
sudo apt install docker-ce docker-ce-cli containerd.io
#等待安装完成#查看Docker版本
sudo docker version#查看Docker运行状态
sudo systemctl status docker

当安装好了Docker之后,有两种方式来执行docker 命令

  • 在docker命令前加上sudo, 比如:sudo docker ps
  • sudo -i 切换至root用户,再执行docker 命令,比如:docker ps

由于国内无法访问到Docker,首先在安装的时候选国内阿里的源,参考上面的第2点。
另外还需要在docker daemon 配置文件中增加国内可用的 docker hub mirror ;
在 /etc/docker/ 这个位置找到daemon.json 文件【没有此文件可以新建】修改为以下内容:

{"registry-mirrors": ["https://docker.registry.cyou","https://docker-cf.registry.cyou","https://dockercf.jsdelivr.fyi","https://docker.jsdelivr.fyi","https://dockertest.jsdelivr.fyi","https://mirror.aliyuncs.com","https://dockerproxy.com","https://mirror.baidubce.com","https://docker.m.daocloud.io","https://docker.nju.edu.cn","https://docker.mirrors.sjtug.sjtu.edu.cn","https://docker.mirrors.ustc.edu.cn","https://mirror.iscas.ac.cn","https://docker.rainbond.cc","https://do.nark.eu.org","https://dc.j8.work","https://dockerproxy.com","https://gst6rzl9.mirror.aliyuncs.com","https://registry.docker-cn.com","http://hub-mirror.c.163.com","http://mirrors.ustc.edu.cn/","https://mirrors.tuna.tsinghua.edu.cn/","http://mirrors.sohu.com/"],"insecure-registries": ["registry.docker-cn.com","docker.mirrors.ustc.edu.cn"],"debug": true,"experimental": false
}

在这里插入图片描述

重载和重启dockers服务

sudo systemctl daemon-reload
sudo systemctl restart docker

启动Docker并添加开机自启动

#启动 Docker
sudo systemctl start docker#设置开机启动 Docker
systemctl enable docker#重启 Docker 
sudo systemctl restart docker

二、常用docker命令

1. docker pull
拉取镜像到本地,如拉取mysql镜像可以用docker pull mysql:版本号,不写默认是最新。
在这里插入图片描述

2. docker images
查看本地镜像
在这里插入图片描述
3. docker rmi
删除本地镜像
在这里插入图片描述
4. docker ps
列出当前正在运行的 Docker 容器
docker ps -a 列出所有创建的容器,包括停止运行的容器
ps 是 “process status” 的缩写, -a 代表 --all
在这里插入图片描述
5. docker rm
删除指定容器,删除前需要停止运行容器,或使用docker rm -f 强制删除
docker rm 容器ID或者容器名 都可以删除容器
在这里插入图片描述
6. docker run
用于创建一个新的容器,并在该容器中启动指定的镜像所对应的应用程序或进程。它会先检查本地是否存在指定的镜像,如果不存在,则会从默认的镜像仓库(如 DockerHub)中拉取该镜像,然后基于该镜像创建容器,并为容器分配所需的资源,最后启动容器内的应用程序。如果镜像已经存在,则直接使用本地镜像创建并启动容器。

#直接运行
docker run python:3.9-slim#交互式运行
docker run -it --name testContainer python:3.9-slim /bin/bash
  • -it:表示以交互式模式运行容器

  • –name testContainer:为容器指定一个名称,方便后续操作

  • python:3.9-slim:使用指定的镜像

  • /bin/bash:启动一个bash shell

  • 退出容器 exit
    在这里插入图片描述
    docker start 用于启动已经创建但处于停止状态的容器。它不会创建新的容器,也不会检查或拉取镜像,而是直接启动之前已经创建好的处于停止状态的容器,使容器内的应用程序或进程继续运行。

    docker stop 停止容器运行。
    在这里插入图片描述

7. docker exec
进行容器内部

docker exec -it testContainer bash

在一个正在运行的名为 testContainer 的容器中执行交互式 bash 命令
-it:表示以交互式模式运行容器
bash:启动一个bash shell
在这里插入图片描述

8. docker build

用来执行Dockerfile文件,制作自己的镜像时会用到

docker build -t myapp:3 .

-t 用于给镜像命名,这里将其命名为myapp 并带上标签
最后的 . 代表构建上下文的路径,也就是告诉 Docker,将当前目录及其包含的所有文件和子目录作为构建镜像时可访问的范围

三、构造Python Flask Web应用镜像

1. 创建Flask应用
新建一个项目pythonflaskweb ,创建 app.py 文件

# -*- coding: GBK -*-
# 处理中文乱码from flask import Flask
from datetime import datetime
import pytzapp = Flask(__name__)@app.route('/')
def hello_world():return 'Hello, Docker!'@app.route('/index')
def hello_index():# 设置时区为北京beijing_tz = pytz.timezone('Asia/Shanghai')# 获取当前UTC时间utc_now = datetime.utcnow().replace(tzinfo=pytz.utc)# 转换为北京时区时间beijing_now = utc_now.astimezone(beijing_tz)TT= beijing_now.strftime('%Y-%m-%d %H:%M:%S')return (f"当前时间是: {TT}")if __name__ == '__main__':app.run(host='0.0.0.0', port=5000)

2. 创建Dockerfile
Dockerfile是Docker镜像的构建脚本,用于定义应用的运行环境。以下是一个典型的Flask应用的Dockerfile:

# 使用官方Python基础镜像
FROM python:3.9-slim# 设置工作目录
WORKDIR /app# 复制当前目录内容到工作目录
COPY . /app# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt# 暴露应用运行的端口
EXPOSE 5000# 运行应用
CMD ["python", "app.py"]

3. 创建requirements.txt
为了管理Python依赖,需要创建一个requirements.txt文件,列出所有必要的库:

Flask==2.2.2
Werkzeug==2.3.7
pytz

4.构建Docker镜像
在项目根目录下运行以下命令构建Docker镜像:

docker build -t flask-app .

-t 选项用于给镜像命名,这里我们将其命名为flask-app
最后的 . 代表构建上下文的路径

5.运行Docker容器
构建完成后,可以使用以下命令运行容器

docker run -p 5000:5000 flask-app

-p 选项用于端口映射,将主机的5000端口映射到容器的5000端口

6.验证应用
在浏览器中访问http://localhost:5000,如果看到“Hello, Docker!”,说明你的Flask应用已经成功运行在Docker容器中。
在这里插入图片描述
在这里插入图片描述

下图为项目结构:
在这里插入图片描述

7.打包镜像和加载镜像
docker save 命令允许你将一个或多个镜像保存到一个tar归档文件中,然后可以将其复制到另一台机器。
docker load 命令允许你从tar归档中加载镜像到另一台机器上。

#使用 docker images 命令来列出机器上的所有图像
docker images #使用 docker save 命令将镜像保存到一个tar文件中
docker save IMAGE ID > MyImage.tar #使用 docker load 命令将镜像加载到机器
docker load < MyImage.tar 

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/575824.html

相关文章:

  • PHP语法基础篇(六):数组
  • 代码随想录|图论|09沉没孤岛
  • LSTM每个变量的shape分析
  • 从输入到路径:AI赋能的地图语义解析与可视化探索之旅
  • 通过ETL从MySQL同步到GaussDB
  • 喜讯 | Mediatom斩获2025第十三届TopDigital创新营销奖「年度程序化广告平台」殊荣
  • LINUX625 DNS反向解析
  • 基于 Spring Boot + Vue 3的现代化社区团购系统
  • 科技如何影响我们的生活?
  • 工业电子 | 什么是SerDes,为何工业和汽车应用需要它?
  • HarmonyOS NEXT仓颉开发语言实战案例:简约音乐播放页
  • 金蝶云星空客户端自定义控件插件-WPF实现自定义控件
  • 使用Docker部署mysql8
  • 社会工程--如何使用对方的语言
  • JDBC入门:Java连接数据库全指南
  • AI辅助编写前端VUE应用流程
  • 树状dp(dfs)(一道挺基础的)
  • Spring Boot 项目问题:while constructing a mapping found duplicate key api
  • 微信小程序封装loading 修改
  • 常见网络安全威胁和防御措施
  • 智能实验室革命:Deepoc大模型驱动全自动化科研新生态
  • HTML简介,初步了解HTML
  • SQl中多使用EXISTS导致多查出了一条不符合条件的数据
  • 教程 | 一键批量下载 Dify「Markdown 转 Docx」生成的 Word 文件(附源码)
  • 【Linux】基础开发工具(2)
  • 操作系统面试知识点(1):操作系统基础
  • CyberGlove触觉反馈手套遥操作机器人灵巧手解决方案
  • Kotlin环境搭建与基础语法入门
  • 大厂测开实习和小厂开发实习怎么选
  • 华为云鸿蒙应用入门级开发者认证 实验(HCCDA-HarmonyOS Cloud Apps)