news 2026/5/12 4:20:24

Docker使用案例-部署Python flask

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Docker使用案例-部署Python flask

环境准备

  • 操作系统-centsos9.0
  • docker 27.3.1

基础知识

  • 三个核心概念:
    • 镜像:一个静态只读的模版,运行起来成为“容器”。比如:ubuntu镜像,ngnix镜像。
    • 容器:镜像的运行实例,每个容器是相互隔离,安全的平台。
    • 仓库:集中存放镜像的地方。
  • 基本操作
    • 镜像操作
      • # 从 Docker Hub 拉取一个镜像 docker pull nginx:latest # 查看本地所有镜像 docker images # 删除一个本地镜像 docker rmi nginx:latest # 构建一个自定义镜像 (需要 Dockerfile) docker build -t my-custom-app:v1.0 .
    • 容器操作
      • # 运行一个容器 # -d: 后台运行 # -p 8080:80: 将宿主机的 8080 端口映射到容器的 80 端口 # --name my-nginx: 给容器起个名字 # nginx:latest: 使用的镜像 docker run -d -p 8080:80 --name my-nginx nginx:latest # 查看正在运行的容器 docker ps # 查看所有容器(包括已停止的) docker ps -a # 停止一个容器 docker stop my-nginx # 启动一个已停止的容器 docker start my-nginx # 重启一个容器 docker restart my-nginx # 删除一个容器 (必须先停止) docker rm my-nginx # 强制删除一个正在运行的容器 (不推荐) docker rm -f my-nginx
    • 管理操作
      • # 查看容器的标准输出日志 docker logs my-nginx # 实时跟踪容器日志 docker logs -f my-nginx # 进入一个正在运行的容器的内部 shell docker exec -it my-nginx /bin/bash # -i: 交互式操作 # -t: 分配一个伪终端
  • Dockerfile:一个包含一系列指令的文本文件,指导docker构建什么镜像
    • 简单示例
      • # 1. 基础镜像:从官方 Node.js 18 的 Alpine 版本开始 FROM node:18-alpine # 2. 设置工作目录 WORKDIR /app # 3. 复制 package.json 和 package-lock.json (如果有的话) # 这一步利用了 Docker 的层缓存,只有当这两个文件变化时才会重新安装依赖 COPY package*.json ./ # 4. 安装项目依赖 RUN npm install # 5. 复制项目所有源代码到工作目录 COPY . . # 6. 暴露应用端口 EXPOSE 3000 # 7. 定义容器启动时执行的命令 CMD [ "node", "server.js" ]
    • 运行启动
      • # -t: 给镜像打标签 (名称:版本) # .: 表示构建上下文是当前目录 docker build -t my-node-app:v1.0 .
  • 数据卷是什么?

    • 数据卷是Docker专门用来持久化和共享数据的一种特殊机制。容器本身是无状态和临时的,数据卷是为了解决删除一个容器时,避免部分文件被一起删除。

操作步骤

创建文件夹

mkdir ~/nginx-html cd /nginx-html/ touch index.html

添加html代码(略)

以数据卷方式运行Nginx

docker run -d -p 8123:80 \ --name mynginx-vol \ -v /root/ngnix-html:/usr/share/nginx/html:ro,Z \ nginx
参数分析
  • -d:后台运行
  • -p 8123:80: 端口映射,将主机的8123端口->容器80端口
  • --name myngnix-vol :设置名称
  • -v /root/ngnix-html:/usr/share/nginx/html:ro,Z:挂载数据卷
    • /root/ngnix-html: 主机路径,存放html文件
    • /usr/share/ngnix/html: 容器内路径-nginx默认网站根目录
    • ro: read-only只读-容器内不能修改改目录内容
    • Z: SELinux标签,自动设置SELinux上下文,运行容器访问

​​​​​​​运行结果​​​​​​​

访问ip:8123端口

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/10 12:44:26

LobeChat现代化架构详解:基于Next.js的高性能聊天应用框架

LobeChat现代化架构详解:基于Next.js的高性能聊天应用框架 在AI助手迅速渗透日常生活的今天,用户早已不满足于“能对话”的机器人——他们期待的是反应迅速、功能丰富、安全可控且体验流畅的智能交互系统。然而,尽管大语言模型(LL…

作者头像 李华
网站建设 2026/5/8 17:15:13

这个Pytest函数,轻松实现动态参数化√

无论什么自动化,部分测试用例均会运用到参数化,参数化可以帮助我们覆盖更多的测试用例,减少重复代码逻辑,然而自动化中也有多种实现参数化的方法,比如UnitTest的DDT模式,Pytest的fixture,以及Py…

作者头像 李华
网站建设 2026/5/9 0:31:51

竞赛毕业设计作品定做---【芳心科技】F. STM32 智驱便携电脉冲针刺仪

实物效果图:实现功能:1. 采用 STM32 单片机作为控制核心。 2. 采用 MOSFET 开关管控制电极片的频率。 3. 通过电开关改变电极片的振幅。 4. 通过三极管改变电极片的电流。 5. 采用 LCD 显示屏进行显示。 6. 按键设置频率、振幅和电流数值。原理图&#x…

作者头像 李华
网站建设 2026/5/9 2:02:32

【Java毕设源码分享】基于springboot+vue的疫情防控自动售货机系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/5/10 19:40:11

梁文锋的“左右互搏”:宕机的DeepSeek与闷声发财的幻方

深夜23点,北京国贸写字楼的灯光只剩零星几点。程序员小林盯着屏幕上刺眼的“服务器繁忙”提示,第三次尝试调用DeepSeek API失败。就在他为瘫痪的程序焦头烂额时,千里之外的杭州,幻方量化的交易系统正自动完成一笔高频交易&#xf…

作者头像 李华