如何使用Python在Docker中创建镜像

100 篇文章 7 订阅

文章包括docker介绍、流行的原因以及docker架构的层次。您还将学习如何使用Python语言在Docker中创建映像。

当开发人员开发出在他们的系统上完美运行但在客户计算机上运行时响应不佳的产品时,他们会感到沮丧。当相同的软件在服务器计算机和其他计算机之间经常发生冲突时,它会更加令人沮丧。

开发专家认真考虑了这件事,并永久解决了这个问题。他们制作了“Docker”来解决这个问题。dotCloud2013年发明了Docker。大多数人在使用Python语言在Docker中创建镜像时都会面临一些挑战。所以,我已经在这篇博文中解释了完整的过程。

您将学习Docker的一些重要命令以及如何在dockerhub中上传您的Docker镜像。在直接深入主题之前,让我们从Docker的基本介绍开始。

什么是Docker

为了使这个介绍简单,它是一个容器,您可以在其中放置整个代码并将您的包交付给客户。基本上,它是一套平台作为使用虚拟操作系统的软件(PaaS)产品。

所有容器都有自己的代码、库和功能。整个代码在外壳中受到完全保护,不能与其他容器混合。但他们可以通过不同的沟通渠道轻松沟通。

Docker受欢迎的原因

Docker有助于开发的主要原因有两个:

  • Docker用于消除项目的生产错误。它还减少了开发方面的错误。
  • 您可以根据项目规模和用户轻松增加和减少项目的可扩展性。

Docker的层级

  • 硬件

它是计算机系统的主要基于计算机基础设施的层。

  • 主机操作系统

主机操作系统是开发人员执行所有功能的操作系统层。

  • Docker

它是连接整个代码并将其连接到其他客户端计算机的层。基本上,它将主机URL重定向到客户端URL

扩大项目规模时面临哪些问题

通常,您根据自己的需要和要求制作应用程序。一段时间后,当您的用户增长或缩小时,您希望根据需要扩大和缩小应用程序。如果您不更改应用程序的可扩展性,您的资源将被浪费。

这个问题的解决方案

为了解决与可扩展性相关的问题,一位计算机科学家发现了Kubernetes,它有助于根据应用程序的流量增加和降低应用程序的可扩展性。

容器镜像

  • 在虚拟环境中,我们制作了一个txt文件,其中列出了所有依赖项。
pip freeze > requirements.txt

该文件将包含您在项目中使用的每个命令和库。例如,如果您使用Tinydb而不是任何数据库,它将包含项目中使用的版本Tinydb的名称。

创建一个Main.py文件

Python的主文件包含在虚拟环境中。它将包括以下语法:

from typing import Optional
from tinydb import TinyDB, Query
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
db = TinyDB(‘db.json’)
class UserPost(BaseModel):
    text: str
    likes: Optional[str] = 0
    user: str
app = FastAPI()
@app.post("/insert_posts/")
async def create_item(userpost: UserPost):
    data = {‘post_id’: len(db.all()) + 1, ‘text’: userpost.text, 
            ‘likes’: userpost.likes, "user":userpost.user}
    db.insert(data)
    return {"status" : "Inserted", "data": data}
@app.get("/get_post")
def get_post():
    """
    Get all of the elements present in the database
    """
    return {"data": db.all()}
@app.get("/")
def hello_world():
    return {"Hello": "World"}

在上面的程序中,我已经解释了如何在Python中使用Docker打印hello world。一开始,我使用了不同的库来降低代码复杂性。例如,我使用BasemodelTinydb来获取数据库。这些库的目的是获取函数的所有预定义特性。

首先,创建一个Docker文件,在这个Docker文件中,定义了以下内容:

  • 它在第一行告诉我们语言和语言版本。
  • 在第二行中,所有工作目录都在代码文件夹中,代码文件夹在 app 项目中。
  • 之后,它会从requirements.txt文件中复制所有需求并将它们放入代码目录中。
  • 要运行代码,使用以下命令:

RUN pip install --no-cache-dir -r /code/requirements.txt

  • 然后,它会复制所有Docker容器代码并放入代码目录中。
  • 然后,最后一步是运行以下命令:

CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

从此Docker文件创建镜像

  • 首先,您可以从docker容器中提取/查看所有镜像:

"docker images"

  • 之后,您应该从镜像文件中创建一个docker镜像并为其分配一个名称:

"docker build <image_name>"

  • 从以下命令创建一个docker容器:

"docker run -d -p 8000:8000 <image_name>"

  • 您可以使用以下命令检查正在运行的容器:

"docker ps"

  • 您可以在使用此命令时进入正在运行的容器:

"docker exec -it bash"

  • 以下命令将用于停止容器:

"docker stop <container id>"

  • 查看所有docker容器的状态:

"docker ls -a"

  • 如果您不想删除容器,也可以这样做:

"docker remove <container id>"

在终端中登录docker非常重要。如果您不这样做,这将产生错误并且不会显示任何内容。您可以通过以下命令在终端中登录docker

  • Docker登录
  • 用户名
  • 密码

如何在Dockerhub中上传Docker镜像

当你在docker中制作镜像时,你必须将镜像上传到dockerhub中。有一些步骤需要遵循:

  • 首先,您需要在dockerhub上注册一个帐户。
  • 您应该在dockerhub帐户中创建一个存储库。
  • 您必须根据dockerhub中使用的存储库名称更改映像名称。
  • 当您要将镜像推送到存储库时,您必须编写以下命令:

"docker push <image_name>

  • 如果您尝试提取存储库中的所有镜像,请编写以下命令:

"docker pull <image_name>

您的所有镜像都将显示在您的dockerhub存储库中。您可以通过终端进行拉取和推送镜像。

https://www.codeproject.com/Tips/5323808/How-to-Create-an-Image-in-Docker-using-Python

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值