Python脚本构建docker镜像抛出“系统找不到指定的文件”

2024-04-19 07:23:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我写下面的脚本,将建立码头形象,然后把它推到ECR。 在这里,在这个片段中,我发布了构建图像时的错误。这是在Window操作系统本地机器上,python版本是3.8.0

我有以下文件夹结构:

/home:
-->ECR
-->buildImage.py
Dockerfile

脚本/home/ECR/buildImage.py如下所示:

import docker
docker_api = docker.APIClient()

    dockerfile_path = os.path.dirname(os.getcwd())
    print("Docker file location: " + dockerfile_path)
    if os.path.isfile(dockerfile_path + "\\Dockerfile"):
        print("File exists")
    else:
        print("File does not exist...")

docker_api.build(path=dockerfile_path, tag=local_tag, rm=True, dockerfile=".\\Dockerfile")

上面这个错误:

pywintypes.error: (2, 'WaitNamedPipe', 'The system cannot find the file specified.')

有了这个

docker_api.build(path='dockerfile_path', tag=local_tag, rm=True, dockerfile=".\\Dockerfile")

这让我很困惑

TypeError: You must specify a directory to build in path

我怎样才能解决这个问题?是否有必要在您的本地计算机上,在我的情况下,在窗口Docker应该是可用的?未安装Docker,但已安装Docker python包版本4.1.0。你知道吗

print(docker.__version__)
>> 4.1.0

Tags: pathdockerdockerfilebuild版本脚本apihome
1条回答
网友
1楼 · 发布于 2024-04-19 07:23:29

你还需要安装Docker引擎。这是Docker引擎的PythonAPI,因此它只是通过Python接口使用来自本地Docker的源代码。此外,您的API版本需要与Docker engine SDK匹配。你知道吗

docs

版本化API和SDK


您应该使用的Docker引擎API的版本取决于Docker守护程序和Docker客户端的版本。你知道吗

给定版本的Docker Engine SDK支持特定版本的Docker Engine API以及所有早期版本。如果发生了突破性的变化,它们会被记录在显著位置。你知道吗

守护程序和客户端API不匹配

  • Docker守护程序和客户机不一定总是需要相同的版本。但是,请记住以下几点。

  • 如果守护程序比客户端新,则客户端不知道守护程序中的新功能或不推荐使用的API端点。

  • 如果客户端比守护程序更新,则客户端可以请求守护程序不知道的API端点。“

相关问题 更多 >