是否可以使用Docker API从Docker主机上的文件创建映像?

时间:2017-02-03 16:17:29

标签: docker docker-api

我正在尝试使用Python docker API从Docker主机上的文件创建Docker镜像。 客户端在不同的主机上运行,​​因此我希望避免将文件下载到客户端,然后将其上传到Docker主机。

这个测试:

import docker
d = docker.from_env()
print(d.images.client.api.import_image("/data/file.tar", "acme.com/test"))
print(d.images.client.api.import_image("file:///data/file.tar", "acme.com/test"))

产生以下输出:

{"status":"Downloading from http://%2Fdata%2Ffile.tar"}
{"errorDetail":{"message":"parse http://%2Fdata%2Ffile.tar: invalid URL escape \"%2F\""},"error":"parse http://%2Fdata%2Ffile.tar: invalid URL escape \"%2F\""}

{"status":"Downloading from file:///data/file.tar"}
{"errorDetail":{"message":"Get file:///data/file.tar: unsupported protocol scheme \"file\""},"error":"Get file:///data/file.tar: unsupported protocol scheme \"file\""}

Docker守护程序1.13正在ESXi 6主机上的Ubuntu 16.04(Xenial Xerus)VM上运行。客户端是在物理Windows 10主机上运行的Docker Python API 2.0.2。

1 个答案:

答案 0 :(得分:0)

在查看Docker daemon code之后,我发现Docker不支持本地文件,并且始终需要来自URL的HTTP响应。

所以我通过Docker容器中的HTTP服务器公开了该文件并发送了HTTP URL。