文章包括docker介绍、流行的原因以及docker架构的层次。您还将学习如何使用Python语言在Docker中创建映像。
当开发人员开发出在他们的系统上完美运行但在客户计算机上运行时响应不佳的产品时,他们会感到沮丧。当相同的软件在服务器计算机和其他计算机之间经常发生冲突时,它会更加令人沮丧。
开发专家认真考虑了这件事,并永久解决了这个问题。他们制作了“Docker”来解决这个问题。dotCloud在2013年发明了Docker。大多数人在使用Python语言在Docker中创建镜像时都会面临一些挑战。所以,我已经在这篇博文中解释了完整的过程。
您将学习Docker的一些重要命令以及如何在dockerhub中上传您的Docker镜像。在直接深入主题之前,让我们从Docker的基本介绍开始。
什么是Docker?为了使这个介绍简单,它是一个容器,您可以在其中放置整个代码并将您的包交付给客户。基本上,它是一套平台作为使用虚拟操作系统的软件(PaaS)产品。
所有容器都有自己的代码、库和功能。整个代码在外壳中受到完全保护,不能与其他容器混合。但他们可以通过不同的沟通渠道轻松沟通。
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。一开始,我使用了不同的库来降低代码复杂性。例如,我使用Basemodel和Tinydb来获取数据库。这些库的目的是获取函数的所有预定义特性。
首先,创建一个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 images"
- 之后,您应该从镜像文件中创建一个docker镜像并为其分配一个名称:
"docker build "
- 从以下命令创建一个docker容器:
"docker run -d -p 8000:8000 "
- 您可以使用以下命令检查正在运行的容器:
"docker ps"
- 您可以在使用此命令时进入正在运行的容器:
"docker exec -it bash"
- 以下命令将用于停止容器:
"docker stop "
- 查看所有docker容器的状态:
"docker ls -a"
- 如果您不想删除容器,也可以这样做:
"docker remove "
在终端中登录docker非常重要。如果您不这样做,这将产生错误并且不会显示任何内容。您可以通过以下命令在终端中登录docker。
- Docker登录
- 用户名
- 密码
当你在docker中制作镜像时,你必须将镜像上传到dockerhub中。有一些步骤需要遵循:
- 首先,您需要在dockerhub上注册一个帐户。
- 您应该在dockerhub帐户中创建一个存储库。
- 您必须根据dockerhub中使用的存储库名称更改映像名称。
- 当您要将镜像推送到存储库时,您必须编写以下命令:
"docker push
- 如果您尝试提取存储库中的所有镜像,请编写以下命令:
"docker pull
您的所有镜像都将显示在您的dockerhub存储库中。您可以通过终端进行拉取和推送镜像。
https://www.codeproject.com/Tips/5323808/How-to-Create-an-Image-in-Docker-using-Python