我怎样才能为DockerDotNet BuildImageFromDockerfile方法创build一个stream?

我正在尝试使用DockerDotNet库构buildDocker镜像:

public Task<Stream> BuildImageFromDockerfileAsync(Stream contents, BuildImageFromDockerfileParameters parameters, CancellationToken cancellationToken) { if (contents == null) { throw new ArgumentNullException("contents"); } if (parameters == null) { throw new ArgumentNullException("parameters"); } BinaryRequestContent data = new BinaryRequestContent(contents, "application/tar"); const string path = "build"; IQueryString queryParameters = new QueryString<BuildImageFromDockerfileParameters>(parameters); return this.Client.MakeRequestForStreamAsync(this.Client.NoErrorHandlers, HttpMethod.Post, path, queryParameters, data, cancellationToken); } 

但是,我从服务器获得500返回,没有错误消息。 Docker api文档指出:

inputstream必须是使用以下algorithm之一压缩的tar归档文件:标识(不压缩),gzip,bzip2,xz。

我在下面复制了我的代码,如果有人能指出任何明显的错误,我将非常感激。 tar归档文件是一个包含Dockerfile的文件夹,由7zip创build。

  var parameters = new BuildImageFromDockerfileParameters { RepositoryTagName = "test-image", RemoveIntermediateContainers = true }; using (var fileStream = new FileStream(@"C:\temp\Dockerfile.tar.gz",FileMode.Open)) { await client.Miscellaneous.BuildImageFromDockerfileAsync(fileStream, parameters, new CancellationToken()); } 

Dockerfile:

 #using ubuntu as having trouble with ssl on debian FROM ubuntu:14.04 #install php RUN apt-get update && apt-get install -y php5-cli #copy crontab, php script and data files container COPY my-crontab / COPY getData.php / COPY saveddata.xml / #run crontab RUN crontab /my-crontab ENTRYPOINT cron -f