引发docker镜像的Python脚本,抛出“系统找不到指定的文件”。

时间:2019-12-17 15:25:43

标签: python docker

我在下面编写脚本,该脚本将构建docker映像,然后将其推送到ECR。 在此代码段中,我在构建图像时发布了错误。这是在Window OS本地计算机中,并且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

我该如何解决?是否有必要在您的本地计算机上(对于我而言,在Window Docker中)应该可用?未安装Docker,但已安装docker python软件包版本4.1.0

print(docker.__version__)
>> 4.1.0

1 个答案:

答案 0 :(得分:1)

您还需要安装Docker Engine。这是Docker引擎的Python API,因此它只是通过python接口使用本地Docker的源代码。此外,您的API版本需要与Docker引擎SDK相匹配。

来自docs

版本化的API和SDK


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

给定版本的Docker Engine SDK支持特定版本的Docker Engine API,以及所有早期版本。如果发生重大更改,则会在显眼位置进行记录。

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

  • Docker守护程序和客户端不必始终保持相同版本。但是,请记住以下几点。

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

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