Docker 上的 Python:如何在 Docker 容器中托管 Python 应用程序?

嘿!让我们了解如何在 Docker 上托管 Python。在本教程结束时,您将了解如何创建 docker 容器,将应用程序添加到容器中,并使其保持运行而不干扰系统进程。

如果您是 Python 初学者,请按照整个课程图来完成此Python 视频课程。

一切准备就绪后,您就可以开始了!


什么是 Docker 容器?

在了解容器的概念之前,让我们先讨论并理解容器的出现。

在虚拟机盛行的时代,所有应用程序都托管在虚拟机上。应用程序所有者必须为那些未充分利用的资源付出巨大的成本,但这些资源却被他们阻止了通往应用程序的流量。由于它不方便携带,因此这种情况并没有持续多久。此外,所有与应用程序相关的配置文件都需要存储在该单个虚拟机上。

这就是容器出现的时候。

容器带来了按用量付费的概念。

基本上,Docker 向我们介绍了容器的概念。容器将应用程序及其所有相关配置文件打包到单个隔离环境中。它将所有与系统相关的软件需求、代码和库折叠到一个单独的空间中。

使用容器,我们只需为应用程序运行时使用的资源付费。也就是说,当容器随应用程序扩展资源使用量时,我们不需要阻止资源。

了解了容器之后,现在让我们尝试在 Docker 容器上托管一个简单的 Python 应用程序。

在 Docker 上运行 Python 的步骤

将应用程序托管到容器中的整个过程贯穿以下场景:

  1. 创建 Dockerfile
  2. 树立形象
  3. 将应用程序作为容器运行

第 1 步 – 创建 Dockerfile

Dockerfile 是计划托管的应用程序的配置需求的实际蓝图。我们可以包含需要执行的所有系统级命令,以使您的最终应用程序蓝图准备好进行处理。它可能包括应用程序所需的一些插件或库。

另外,我们将运行下面的简单 python 应用程序作为容器 –

演示.py

data = list()
data = ['JournalDev','AskPython']
for x in lst:
print(x)

Dockerfile–

FROM python:3
ADD demo.py /
CMD [ "python", "./demo.py" ]

Dockerfile 提供了一些指令 ,如下所示 –

  • FROM  – 它为接下来要处理的指令设置基础映像。对于本示例,Python 版本已设置为 3 作为基础图像层。Dockerfile 在执行指令时从 Docker Hub(开源镜像存储库)获取基础镜像。
  • ADD  – 使用 ADD 指令,我们可以以文件、目录甚至 URL 的形式向基本 dockerfile 灌输指令。
  • CMD  – 该指令使我们能够声明一个位置,以便使用命令来运行特定的 python 或任何 bash/sh 脚本。

第 2 步 – 构建 Docker 镜像

构建了 Dockerfile 后,为我们的生产做好准备非常重要。也就是说,我们需要根据 Dockerfile 中定义的所有命令创建一个基础层,以使容器正常运行和执行。同样,我们使用以下格式的命令创建一个 Docker 映像。

句法-

docker build -t image-name:tag .

例子-

docker build -t python-image:1.0 .

输出-

[+] Building 5.4s (7/7) FINISHED
 => [internal] load build definition from Dockerfile                                                             0.1s
 => => transferring dockerfile: 31B                                                                              0.0s
 => [internal] load .dockerignore                                                                                0.1s
 => => transferring context: 2B                                                                                  0.0s
 => [internal] load metadata for docker.io/library/python:3                                                      5.0s
 => [internal] load build context                                                                                0.1s
 => => transferring context: 31B                                                                                 0.0s
 => [1/2] FROM docker.io/library/python:3@sha256:b6a9702c4b2f9ceeff807557a63a710ad49ce737ed85c46174a059a299b580  0.0s
 => CACHED [2/2] ADD demo.py /                                                                                 0.0s
 => exporting to image                                                                                           0.1s
 => => exporting layers                                                                                          0.0s
 => => writing image sha256:8b2da808b361bc5112e2afa087b9eb4e305304bcc53c18925d04fe8003f92975                     0.0s
 => => naming to docker.io/library/python-image:1.0 

第 3 步 – 运行映像(将应用程序托管在容器中)

这些图像(上面创建的)实际上独立于任何底层配置。另一方面,容器需要一个映像作为基本配置来运行应用程序的实例。同样,我们需要启动运行容器的进程,应用程序实例将通过该容器运行。

我们使用docker run 命令来实际启动容器并运行 Dockerfile 中提到的配置。

例子:

docker run python-image:1.0

输出:

JournalDev
AskPython

我们甚至可以通过安装Docker Community Edition应用程序来检查桌面上是否存在此正在运行的容器,如下所示(用于示例目的):

Docker 社区版

结论

至此,我们这个话题就结束了。如果您遇到任何问题,请随时在下面发表评论。

有关更多与 Python 编程相关的此类文章,请继续关注我们。

到那时,快乐学习!🙂