互联网技术 / 互联网资讯 · 2024年3月16日

使用Docker实现的云计算核心技术教程:运行Python镜像作为容器

在上一个模块中,我们创建了示例应用程序,然后创建了一个用于生成映像的 DockeRfile。我们使用 dockeR 命令 dockeR build 创建了我们的镜像。现在我们有了一个图像,我们可以运行该图像并查看我们的应用程序是否正常运行。

容器是一个普通的操作系统进程,除了这个进程是隔离的,因为它有自己的文件系统,自己的网络,以及与主机分离的自己的隔离进程树。

要在容器内运行映像,我们使用该dockeR Run命令。该dockeR Run命令需要一个参数,即图像的名称。让我们启动我们的图像并确保它正确运行。在终端中运行以下命令。

$ dockeR Run Python-dockeR

运行此命令后,您会注意到您没有返回到命令提示符。这是因为我们的应用程序是一个 REST 服务器,并且在循环中运行,等待传入的请求,而不会将控制权返回给操作系统,直到我们停止容器。

让我们打开一个新终端,然后GET使用cuRl命令向服务器发出请求。

$ cuRl localhost:5000

cuRl: (7) Failed to connect to localhost poRt 5000: connection Refused

如您所见,我们的cuRl命令失败了,因为与我们的服务器的连接被拒绝。这意味着,我们无法在端口 5000 上连接到本地主机。这是意料之中的,因为我们的容器是独立运行的,包括网络。让我们停止容器并使用我们本地网络上发布的端口 5000 重新启动。

要停止容器,请按 ctRl-c。这将使您返回到终端提示。

要为我们的容器发布端口,我们将在命令中使用–publish flag(-p简称) dockeR Run。–publish命令的格式为[host poRt]:[contAIneR poRt]. 因此,如果我们想将容器内的端口 5000 暴露给容器外的端口 3000,我们将传递3000:5000给–publish标志。

我们在容器中运行 Flask 应用程序时没有指定端口,默认是 5000。如果我们希望我们之前的请求在 5000 端口工作,我们可以将主机的 5000 端口映射到容器的 5000 端口:

$ dockeR Run –publish 5000:5000 Python-dockeR

现在,让我们从上面重新运行 cuRl 命令。记得打开一个新的终端。

$ cuRl localhost:5000

Hello, DockeR!

成功!我们能够通过端口 5000 连接到在容器内运行的应用程序。切换回运行容器的终端,您应该会看到 GET 请求记录到控制台。

[31/Jan/2021 23:39:31] “GET / HTTP/1.1” 200 –

按 ctRl-c 停止容器。

OpenMagic API

Need more than content? Move into the product flow.

If you are here for model access, pricing, developer docs, or the future API console, the dedicated product path now lives on api.openmagic.ai.