news 2026/9/23 8:57:08

Docker如何让Web应用“搬家不翻车”

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Docker如何让Web应用“搬家不翻车”

一、步骤一:搞懂Docker核心概念——3个词让你入门

1. 镜像(Image):应用的“安装光盘”
  • 本质:只读模板,包含应用运行所需的所有内容(代码、依赖、配置)。
  • 类比:就像Windows安装光盘,里面有系统文件和安装程序,用它能装出多个相同的系统。
  • 举例:Python官方镜像(python:3.9-slim)包含Python解释器和基础库,你可以基于它添加自己的代码。
2. 容器(Container):镜像的“运行实例”
  • 本质:镜像启动后的独立进程,有自己的文件系统和网络,与其他容器隔离。
  • 类比:用安装光盘(镜像)装出来的Windows系统(容器),可以同时装多个,互不影响。
  • 特点:启动快(秒级)、资源占用少(共享主机内核)、删除后数据不残留(除非挂载外部存储)。
3. 仓库(Repository):镜像的“应用商店”
  • 作用:存储和分发镜像,类似GitHub存代码。

  • 常用仓库:Docker Hub(官方,有Python、Nginx等官方镜像)、阿里云镜像仓库(国内访问快)。

二、步骤二:编写Dockerfile——给应用“定制集装箱”

以Python Flask应用为例,项目结构如下:
my_flask_app/ ├── app.py # Flask应用代码 ├── requirements.txt # 依赖库列表(如flask==2.0.1) └── Dockerfile # 镜像构建脚本(重点)
Dockerfile编写详解(逐行解释):
dockerfile

# 1. 选择基础镜像(从仓库拉取Python 3.9环境) FROM python:3.9-slim # 2. 设置工作目录(后续命令在此目录执行) WORKDIR /app # 3. 复制本地文件到镜像(把代码和依赖文件复制进去) COPY . . # 4. 安装依赖(用pip安装requirements.txt里的库) RUN pip install --no-cache-dir -r requirements.txt # 5. 声明端口(告诉Docker容器会监听5000端口,仅声明) EXPOSE 5000 # 6. 容器启动命令(运行Flask应用) CMD ["python", "app.py"]

核心指令避坑点:
  • FROM:选官方镜像(如python:3.9-slim),避免非官方镜像的安全风险;

  • COPY.表示当前目录,确保Dockerfile和代码在同一目录;

  • RUN:安装依赖时加--no-cache-dir,减小镜像体积;

  • CMD:只能有一个,若写多个,只有最后一个生效。

三、步骤三:构建镜像+运行容器——让应用“跑起来”

1. 构建镜像(把Dockerfile变成可运行的“集装箱”)

打开终端,进入my_flask_app目录,执行:

bash

docker build -t my-flask-app:1.0 .

  • 参数说明
    • -t my-flask-app:1.0:给镜像起名“my-flask-app”,版本号“1.0”;
    • .:指定Dockerfile所在目录(当前目录)。
  • 构建成功标志:终端显示“Successfully built [镜像ID]”。
2. 运行容器(启动应用,对外提供服务)

执行以下命令,将容器的5000端口映射到主机的5000端口:

bash

docker run -p 5000:5000 my-flask-app:1.0

  • 参数说明
    • -p 5000:5000:主机端口:容器端口(访问http://localhost:5000即可打开应用);
  • 验证成功:浏览器输入http://localhost:5000,看到Flask应用页面。
3. 常用操作:查看/停止容器
  • 查看运行中的容器:

    bash

    docker ps # 列出所有运行中的容器

  • 停止容器(需替换<容器ID>):

    bash

    docker stop <容器ID> # 容器ID可通过docker ps查看

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

c++_-_

map

作者头像 李华
网站建设 2026/9/20 18:53:54

WorkshopDL跨平台模组下载器:解锁Steam创意工坊的终极方案

WorkshopDL跨平台模组下载器&#xff1a;解锁Steam创意工坊的终极方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 还在为无法使用Steam创意工坊模组而烦恼吗&#xff1f;Wo…

作者头像 李华
网站建设 2026/9/20 22:55:14

Markdown转PPT实战指南:新手也能轻松搞定专业演示

还在为制作PPT而烦恼吗&#xff1f;告别繁琐的手动排版&#xff0c;用Markdown转PPT工具让你的文档秒变专业演示文稿&#xff01;无论是学术报告、产品展示还是培训材料&#xff0c;这个工具都能帮你快速搞定。 【免费下载链接】md2pptx Markdown To PowerPoint converter 项…

作者头像 李华
网站建设 2026/9/22 17:57:13

msvcp140_1.dll文件损坏或找不到怎么办? 附免费下载方法

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/9/20 22:56:52

NCM加密音频文件技术解析与转换方案实现

NCM文件格式作为网易云音乐VIP内容的专用保护容器&#xff0c;采用了多层保护机制来保障音频数据。本文将深入分析NCM文件的保护原理&#xff0c;并详细介绍基于纯C语言实现的ncmToMp3转换工具的技术架构与实现细节。 【免费下载链接】ncmToMp3 网易云vip的ncm文件转mp3/flac -…

作者头像 李华
网站建设 2026/9/20 23:09:54

绝区零自动化工具全面配置指南:从安装到精通

绝区零自动化工具全面配置指南&#xff1a;从安装到精通 【免费下载链接】ZenlessZoneZero-OneDragon 绝区零 一条龙 | 全自动 | 自动闪避 | 自动每日 | 自动空洞 | 支持手柄 项目地址: https://gitcode.com/gh_mirrors/ze/ZenlessZoneZero-OneDragon 绝区零一条龙工具是…

作者头像 李华