我正在尝试 使用 官方链接中提到
的API 构建 docker镜像 。
但是我无法获得文件中的内容:示例请求:
POST /v1.24/build HTTP/1.1
{{ TAR STREAM }}
有几件事使我感到困惑,
1)在哪里提到 Dockerfile 的 路径 ?
2)“归档文件必须在归档文件的根目录中包含一个构建指令文件,通常称为Dockerfile。” 来自docker docs的此声明,这里的困惑
是存档的根 是 什么 ?
3) 构建图像的详细命令 是什么?
最后,能够 通过Docker API构建映像 。
样本Dockerfile:
# cat Dockerfile
FROM ubuntu:14.04
RUN mkdir demo
RUN apt-get update
RUN apt-get -y install vim
创建一个包含您的Dockerfile的tar文件。
# tar -cvf Dockerfile.tar.gz Dockerfile
执行以下API,有关更多选项,请参考此。
# curl -v -X POST -H "Content-Type:application/tar" --data-binary '@Dockerfile.tar.gz' http://127.0.0.1:5000/build?t=build_test
* Hostname was NOT found in DNS cache
* Trying 127.0.0.1...
* Connected to 127.0.0.1 (127.0.0.1) port 5000 (#0)
> POST /build?t=build_test HTTP/1.1
> User-Agent: curl/7.35.0
> Host: 127.0.0.1:5000
> Accept: */*
> Content-Type:application/tar
> Content-Length: 10240
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
< HTTP/1.1 200 OK
< Api-Version: 1.28
< Content-Type: application/json
< Docker-Experimental: false
< Ostype: linux
* Server Docker/17.04.0-ce (linux) is not blacklisted
< Server: Docker/17.04.0-ce (linux)
< Date: Mon, 01 May 2017 09:56:54 GMT
< Transfer-Encoding: chunked
<
{"stream":"Step 1/4 : FROM ubuntu:14.04\n"}
{"stream":" ---\u003e 302fa07d8117\n"}
{"stream":"Step 2/4 : RUN mkdir demo\n"}
{"stream":" ---\u003e Running in 5941f911099e\n"}
{"stream":" ---\u003e bccbffdd776a\n"}
{"stream":"Removing intermediate container 5941f911099e\n"}
{"stream":"Step 3/4 : RUN apt-get update\n"}
{"stream":" ---\u003e Running in 7aefd190a165\n"}
{"stream":"Ign http://archive.ubuntu.com trusty InRelease\n"}
{"stream":"Get:1 http://archive.ubuntu.com trusty-updates InRelease [65.9 kB]\n"}
{"stream":"Get:2 http://archive.ubuntu.com trusty-security InRelease [65.9 kB]\n"}
{"stream":"Get:3 http://archive.ubuntu.com trusty Release.gpg [933 B]\n"}
{"stream":"Get:4 http://archive.ubuntu.com trusty Release [58.5 kB]\n"}
{"stream":"Get:5 http://archive.ubuntu.com trusty-updates/main Sources [491 kB]\n"}
{"stream":"Get:6 http://archive.ubuntu.com trusty-updates/restricted Sources [6467 B]\n"}
{"stream":"Get:7 http://archive.ubuntu.com trusty-updates/universe Sources [226 kB]\n"}
.......
{"stream":"Fetched 22.5 MB in 1min 40s (224 kB/s)\nReading package lists..."}
{"stream":"\n"}
{"stream":" ---\u003e ff06741dea7e\n"}
{"stream":"Removing intermediate container 7aefd190a165\n"}
{"stream":"Step 4/4 : RUN apt-get -y install vim\n"}
{"stream":" ---\u003e Running in e9ddad5a4695\n"}
{"stream":"Reading package lists..."}
{"stream":"\n"}
{"stream":"Building dependency tree..."}
{"stream":"\nReading state information...\n"}
{"stream":"The following extra packages will be installed:\n libgpm2 libpython2.7 libpython2.7-minimal libpython2.7-stdlib vim-runtime\n"}
{"stream":"Suggested packages:\n gpm ctags vim-doc vim-scripts\n"}
{"stream":"The following NEW packages will be installed:\n libgpm2 libpython2.7 libpython2.7-minimal libpython2.7-stdlib vim\n vim-runtime\n"}
{"stream":"0 upgraded, 6 newly installed, 0 to remove and 3 not upgraded.\nNeed to get 9074 kB of archives.\nAfter this operation, 42.9 MB of additional disk space will be used.\nGet:1 http://archive.ubuntu.com/ubuntu/ trusty/main libgpm2 amd64 1.20.4-6.1 [16.5 kB]\n"}
.......
{"stream":"Processing triggers for libc-bin (2.19-0ubuntu6.11) ...\n"}
{"stream":" ---\u003e b1736dd9b698\n"}
{"stream":"Removing intermediate container e9ddad5a4695\n"}
{"stream":"Successfully built b1736dd9b698\n"}
* Connection #0 to host 127.0.0.1 left intact
成功构建镜像后,检查docker镜像。
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
build_test latest b1736dd9b698 8 seconds ago 254MB
删除了一些不必要的输出。
问题内容: 通过使用詹金斯,我创建了一个“管道”类型的项目。然后将“ SCM管道”设置为。您可以检查我的GitHub存储库: 我想使用Jenkins管道构建docker映像。这是Jenkinsfile: Dockerfile也非常简单: 当我运行项目时。我收到以下错误: 这是完整的控制台输出 我检查了工作区: 测试 目录中什么都没有,但是Jenkinsfile和Dockerfile都在 test
通过使用jenkins,我创建了一个“管道”类型的项目。我设置了“来自SCM的管道”来获取< code>Jenkinsfile。你可以查看我的GitHub库: 我想使用 Jenkins 管道来构建一个 docker 映像。以下是 Jenkinsfile: Dockerfile文件也非常简单: 当我运行这个项目时。我得到以下错误: 这是完整的控制台输出 我检查了工作区: 测试目录中没有任何内容,但J
Quarkus文档解释了如何使用Maven构建docker映像。但我在利用Gradle和Kotlin。我正在想办法做这些步骤: 首先,我想我想要一个包含gradle而不是maven的图像(Quay.io似乎没有)。然后,我必须考虑我还需要复制什么(而不是pom.xml),也许???其次,我相信这个图像也包含了GraalVM。所以我不确定我能在那里做些什么。 我必须使用Maven吗?我真的真的不想。
我是Docker和Jenkins的新手,我正在尝试创建一个Jenkins管道来构建Docker的形象。我在尝试构建时遇到了问题,并不断收到此错误: /var/jenkins_home/workspace/Docker-Pipeline@tmp/耐用-a11b32f8/脚本。sh:第1行:docker:未找到命令 我已经在虚拟机上安装了ubuntu 我正在做和他完全一样的事情,但总是失败。
DockerFile: 在之后,GPG行显示为红色,图像创建失败。为什么?