容器化技术,特别是Docker,已经成为现代软件开发和部署的重要工具。

简介: 容器化技术,特别是Docker,已经成为现代软件开发和部署的重要工具。

容器化技术,特别是Docker,已经成为现代软件开发和部署的重要工具。它允许开发人员将应用程序及其依赖项打包到一个可移植的容器中,从而确保应用程序在不同环境中的一致性和可靠性。下面,我将给出一个使用Docker和Python的简单示例,并详细解释其背后的概念和步骤。

1. 准备工作

首先,确保你的系统已经安装了Docker。你可以从Docker官方网站下载并安装适用于你操作系统的Docker Desktop。

2. 创建一个简单的Python应用

为了演示,我们将创建一个简单的Python Flask应用。在本地创建一个名为flask_app的目录,并在其中创建两个文件:app.pyrequirements.txt

app.py

from flask import Flask, render_template_string

app = Flask(__name__)

@app.route('/')
def hello():
    template = '''
    <!doctype html>
    <title>Hello from Flask</title>
    <h1>Hello World!</h1>
    '''
    return render_template_string(template)

if __name__ == "__main__":
    app.run(debug=True, host='0.0.0.0')

这个Flask应用非常简单,它只会在根路径/上返回一个包含“Hello World!”的HTML页面。

requirements.txt

Flask

这个文件列出了Python应用所需的依赖项。在这个例子中,我们只需要Flask库。

3. 编写Dockerfile

flask_app目录中创建一个名为Dockerfile的文件。Dockerfile是一个文本文件,其中包含了一系列指令,用于自动化构建Docker镜像。

# 使用官方的Python运行时作为父镜像
FROM python:3.8-slim-buster

# 设置工作目录为/app
WORKDIR /app

# 将当前目录内容复制到容器的/app内
ADD . /app

# 安装任何需要的包
RUN pip install --no-cache-dir -r requirements.txt

# 对外暴露5000端口
EXPOSE 5000

# 定义环境变量
ENV NAME World

# 运行app.py当容器启动
CMD ["python", "app.py"]

这个Dockerfile做了以下几件事:

  • 使用Python 3.8作为基础镜像。
  • 设置工作目录为/app
  • 将当前目录(即包含Dockerfile、app.py和requirements.txt的目录)的内容复制到容器的/app目录。
  • 使用pip安装requirements.txt中列出的依赖项。
  • 暴露容器的5000端口,以便外部可以访问Flask应用。
  • 设置一个环境变量NAME(尽管在这个例子中我们并没有使用它)。
  • 当容器启动时,运行app.py

4. 构建和运行Docker镜像

flask_app目录中打开终端或命令提示符,并运行以下命令来构建Docker镜像:

docker build -t flask_app .

这个命令会告诉Docker使用当前目录下的Dockerfile来构建一个名为flask_app的镜像。-t标志用于指定镜像的名称和标签。

一旦镜像构建完成,你可以使用以下命令来运行它:

docker run -p 4000:5000 flask_app

这个命令会告诉Docker运行flask_app镜像,并将容器的5000端口映射到主机的4000端口。现在,你应该可以在浏览器中访问http://localhost:4000/来查看你的Flask应用了。

5. 总结

通过上面的示例,我们展示了如何使用Docker和Python来创建一个简单的Flask应用,并将其打包到一个Docker容器中。容器化技术为开发人员提供了许多好处,包括可移植性、一致性和隔离性。通过使用Dockerfile,我们可以自动化构建过程,并确保在不同环境中运行的应用程序具有相同的配置和依赖项。

相关文章
|
10月前
|
运维 监控 数据可视化
小白也能部署应用,3个免费的容器化部署工具测评
本文对比了三款容器化部署工具:Docker Compose、Portainer 和 Websoft9。Docker Compose 适合开发者编排多容器应用,Portainer 提供图形化管理界面,而 Websoft9 则面向中小企业和非技术人员,提供一键部署与全流程运维支持,真正实现“开箱即用”。三款工具各有定位,Websoft9 更贴近大众用户需求。
小白也能部署应用,3个免费的容器化部署工具测评
|
8月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
813 51
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
8月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
882 6
|
8月前
|
监控 Linux 调度
【赵渝强老师】Docker容器的资源管理机制
本文介绍了Linux CGroup技术及其在Docker资源管理中的应用。通过实例演示了如何利用CGroup限制应用程序的CPU、内存和I/O带宽使用,实现系统资源的精细化控制,帮助理解Docker底层资源限制机制。
814 6
|
8月前
|
Java Linux 虚拟化
【Docker】(1)Docker的概述与架构,手把手带你安装Docker,云原生路上不可缺少的一门技术!
1. Docker简介 1.1 Docker是什么 为什么docker会出现? 假定您在开发一款平台项目,您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。 您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。 您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。 **要求:**希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销 问题: 要如何确保应用能够在这些环境中运行和通过质量检测? 在部署过程中不出现令人头疼的版本、配置问题 无需重新编写代码和进行故障修复
707 2
|
8月前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
1152 4
|
9月前
|
关系型数据库 MySQL Linux
事项驱动的项目管理工具Dectask的Docker安装教程
Dectask是智能驱动的新一代项目协作工具,本人介绍其Docker安装教程。
246 2