我正在尝试使用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。
答案 0 :(得分:0)
在查看Docker daemon code之后,我发现Docker不支持本地文件,并且始终需要来自URL的HTTP响应。
所以我通过Docker容器中的HTTP服务器公开了该文件并发送了HTTP URL。