- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以配置 Docker 以输出构建 Dockerfile 的时间?
我们运营着一个中等规模的开发团队,并希望收集有关我们开发人员的开发容器的平均构建时间的统计数据。
理想情况下,它应该测量各个步骤的持续时间。
最佳答案
BuildKit ,它在 18.06 中是实验性的,在 18.09 中普遍可用,内置了这个功能。要使用实验模式配置 dockerd 守护进程,您可以设置 daemon.json:
$ cat /etc/docker/daemon.json
{
"experimental": true
}
然后您可以使用环境变量从客户端启用 BuildKit:
$ export DOCKER_BUILDKIT=1
$ docker build -t java-test:latest .
[+] Building 421.6s (13/13) FINISHED
=> local://context (.dockerignore) 1.6s
=> => transferring context: 56B 0.3s
=> local://dockerfile (Dockerfile) 2.0s
=> => transferring dockerfile: 895B 0.4s
=> CACHED docker-image://docker.io/tonistiigi/copy:v0.1.3@sha256:e57a3b4d6240f55bac26b655d2cfb751f8b9412d6f 0.1s
=> docker-image://docker.io/library/openjdk:8-jdk-alpine 1.0s
=> => resolve docker.io/library/openjdk:8-jdk-alpine 0.0s
=> local://context 1.7s
=> => transferring context: 6.20kB 0.4s
=> docker-image://docker.io/library/openjdk:8-jre-alpine 1.3s
=> => resolve docker.io/library/openjdk:8-jre-alpine 0.0s
=> /bin/sh -c apk add --no-cache maven 61.0s
=> copy /src-0/pom.xml java/pom.xml 1.3s
=> /bin/sh -c mvn dependency:go-offline 339.4s
=> copy /src-0 java 0.9s
=> /bin/sh -c mvn package -Dmaven.test.skip=true 10.2s
=> copy /src-0/gs-spring-boot-docker-0.1.0.jar java/app.jar 0.8s
=> exporting to image 1.2s
=> => exporting layers 1.0s
=> => writing image sha256:d57028743ca10bb4d0527a294d5c83dd941aeb1033d4fe08949a135677846179 0.1s
=> => naming to docker.io/library/java-test:latest 0.1s
还有一个选项可以禁用 tty 控制台输出,它会生成更适合脚本的输出,每个部分都有开始、停止和持续时间:
$ docker build -t java-test:latest --progress plain .
#1 local://dockerfile (Dockerfile)
#1 digest: sha256:da721b637ea85add6e26070a48520675cefc2bed947c626f392be9890236d11b
#1 name: "local://dockerfile (Dockerfile)"
#1 started: 2018-09-05 19:30:53.899809093 +0000 UTC
#1 completed: 2018-09-05 19:30:53.899903348 +0000 UTC
#1 duration: 94.255µs
#1 started: 2018-09-05 19:30:53.900069076 +0000 UTC
#1 transferring dockerfile: 38B done
#2 ...
#2 local://context (.dockerignore)
#2 digest: sha256:cbf55954659905f4d7bd2fc3e5e52d566055eecd94fd7503565315022d834c21
#2 name: "local://context (.dockerignore)"
#2 started: 2018-09-05 19:30:53.899624016 +0000 UTC
#2 completed: 2018-09-05 19:30:53.899695455 +0000 UTC
#2 duration: 71.439µs
#2 started: 2018-09-05 19:30:53.899839335 +0000 UTC
#2 completed: 2018-09-05 19:30:54.359527504 +0000 UTC
#2 duration: 459.688169ms
#2 transferring context: 34B done
#1 local://dockerfile (Dockerfile)
#1 completed: 2018-09-05 19:30:54.592304408 +0000 UTC
#1 duration: 692.235332ms
#3 docker-image://docker.io/tonistiigi/copy:v0.1.3@sha256:e57a3b4d6240f55ba...
#3 digest: sha256:39386c91e9f27ee70b2eefdee12fc8a029bf5edac621b91eb5f3e6001d41dd4f
#3 name: "docker-image://docker.io/tonistiigi/copy:v0.1.3@sha256:e57a3b4d6240f55bac26b655d2cfb751f8b9412d6f7bb1f787e946391fb4b21b"
#3 started: 2018-09-05 19:30:54.731749377 +0000 UTC
#3 completed: 2018-09-05 19:30:54.732013326 +0000 UTC
#3 duration: 263.949µs
#5 docker-image://docker.io/library/openjdk:8-jdk-alpine
#5 digest: sha256:d680c6a82813d080081fbc3c024d21ddfa7ff995981cc7b4bfafe55edf80a319
#5 name: "docker-image://docker.io/library/openjdk:8-jdk-alpine"
#5 started: 2018-09-05 19:30:54.731483638 +0000 UTC
#5 completed: 2018-09-05 19:30:54.732480345 +0000 UTC
#5 duration: 996.707µs
#4 docker-image://docker.io/library/openjdk:8-jre-alpine
#4 digest: sha256:9ed31df4e6731a1718ea93bfa77354ad1ea2d1625c1cb16e2087d16d0b84bd00
#4 name: "docker-image://docker.io/library/openjdk:8-jre-alpine"
#4 started: 2018-09-05 19:30:54.73176516 +0000 UTC
#4 completed: 2018-09-05 19:30:54.732603067 +0000 UTC
#4 duration: 837.907µs
#7 local://context
#7 digest: sha256:efe765161a29e2bf7a41439cd2e6656fcf6fa6bc97da825ac9b5a0d8adecf1ac
#7 name: "local://context"
#7 started: 2018-09-05 19:30:54.73178732 +0000 UTC
#7 completed: 2018-09-05 19:30:54.731880943 +0000 UTC
#7 duration: 93.623µs
#7 started: 2018-09-05 19:30:54.792740019 +0000 UTC
#7 transferring context: 473B done
#7 completed: 2018-09-05 19:30:55.059008345 +0000 UTC
#7 duration: 266.268326ms
#9 /bin/sh -c mvn dependency:go-offline
#9 digest: sha256:2197672cd7a44d93e0dba40aa00d7ef41f8680226d91f469d1c925646bdc8d6d
#9 name: "/bin/sh -c mvn dependency:go-offline"
#9 started: 2018-09-05 19:30:55.203449147 +0000 UTC
#9 completed: 2018-09-05 19:30:55.203449147 +0000 UTC
#9 duration: 0s
#9 cached: true
#10 copy /src-0 java
#10 digest: sha256:36cf252c34be098731bd8c5fb3f273f9c1437a5f74a65a3555d71150c2092fa7
#10 name: "copy /src-0 java"
#10 started: 2018-09-05 19:30:55.203449147 +0000 UTC
#10 completed: 2018-09-05 19:30:55.203449147 +0000 UTC
#10 duration: 0s
#10 cached: true
#11 /bin/sh -c mvn package -Dmaven.test.skip=true
#11 digest: sha256:390464b1fdc7a4c833b3476033d95b7714e22bcbfd018469e97b04781cb41532
#11 name: "/bin/sh -c mvn package -Dmaven.test.skip=true"
#11 started: 2018-09-05 19:30:55.203449147 +0000 UTC
#11 completed: 2018-09-05 19:30:55.203449147 +0000 UTC
#11 duration: 0s
#11 cached: true
#12 copy /src-0/gs-spring-boot-docker-0.1.0.jar java/app.jar
#12 digest: sha256:a7d60191a720f80de72a77ebe0d4bd1b0fd55d44e623661e80916b7fd1952076
#12 name: "copy /src-0/gs-spring-boot-docker-0.1.0.jar java/app.jar"
#12 started: 2018-09-05 19:30:55.203449147 +0000 UTC
#12 completed: 2018-09-05 19:30:55.203555216 +0000 UTC
#12 duration: 106.069µs
#12 cached: true
#6 /bin/sh -c apk add --no-cache maven
#6 digest: sha256:db505db5e418f195c7bad3a710ad40bec3d91d47ff11a6f464b3ae37af744e7d
#6 name: "/bin/sh -c apk add --no-cache maven"
#6 started: 2018-09-05 19:30:55.203449147 +0000 UTC
#6 completed: 2018-09-05 19:30:55.203449147 +0000 UTC
#6 duration: 0s
#6 cached: true
#8 copy /src-0/pom.xml java/pom.xml
#8 digest: sha256:f032d4ff111c6ab0efef1a4e37d2467fffe43f48a529b8d56291ec81f96296ab
#8 name: "copy /src-0/pom.xml java/pom.xml"
#8 started: 2018-09-05 19:30:55.203449147 +0000 UTC
#8 completed: 2018-09-05 19:30:55.203449147 +0000 UTC
#8 duration: 0s
#8 cached: true
#13 exporting to image
#13 digest: sha256:d536dc2895c30fbde898bb4635581350a87c21f3695913ba21850a73d31422d9
#13 name: "exporting to image"
#13 started: 2018-09-05 19:30:55.203674127 +0000 UTC
#13 exporting layers done
#13 writing image sha256:d57028743ca10bb4d0527a294d5c83dd941aeb1033d4fe08949a135677846179 0.1s done
#13 naming to docker.io/library/java-test:latest
#13 completed: 2018-09-05 19:30:55.341300051 +0000 UTC
#13 duration: 137.625924ms
#13 naming to docker.io/library/java-test:latest 0.0s done
关于docker - 如何衡量 Docker 构建步骤的持续时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59038819/
我在使用 gradle 构建一个特定应用程序时遇到问题。该应用程序可以用 eclipse 编译和构建,它在平板电脑上运行良好。当我尝试使用 Gradle 构建它时,“compileDebugJava”
我有一个 C 程序,是一位离开的开发人员留给我的。我试图弄清楚他到底在做什么,并将软件重新安排成更合乎逻辑的东西,这样我就可以更轻松地构建它。我正在使用 CMake 构建,而他使用的是 Make。 有
我刚开始阅读“Pro Spring MVC with web flow”,它附带了一个我想遵循的代码示例。 我要什么 - 我想像书中那样构建应用程序,使用 Gradle 有什么问题 - 我没用过 Gr
我希望有人已经这样做了。我正在尝试为我的一个 angular 2 项目在 teamcity 中建立一个连续的构建。在做了一些研究之后,我按照以下步骤操作: 构建步骤 1:为 teamcity 安装 j
我有一个旧的 ASP.Net 网站解决方案,看起来像: 当我在 Visual Studio 中构建解决方案时,我得到以下输出: ------ Build started: Project: C:\..
我使用 gulp-usref、gulp-if、gulp-uglify、gulp-csso 和 gulp-file-include 来构建我的应用程序。除了 HTML 保持原样外,构建中的一切都运行良好
我正在使用 ionic2 开发内部移动应用程序。我可以通过以下方式成功构建 ios: ionic build ios and ionic build ios --prod 但当我这样做时,它一直失败
我是一位经验丰富的 .NET/C# 开发人员,但对这里的几乎所有技术/库(包括 SQL/DB 工作)都是新手。 我正在开发一个具有 Azure/Entity Framework .NET 后端和可移植
我正在使用 VS 2008。我可以使用 IDE 成功编译我的解决方案。但是,当我尝试使用 devenv.com 构建它时,它失败并提示“错误:找不到项目输出组'(无法确定名称)的输出”。该组、其配置或
版本: ember.js 2.7,ember-data 2.7 ember-cli 2.9.1//同样适用于 ember-cli 2.7 node 6.9.1, npm 3.10.9//也适用于 no
我第一次修补 AzureDevops,设置一些 CI 任务。 我有一个公共(public)存储库(开源)和一个包含 3 个 F# 项目的解决方案(.sln)。该解决方案在 Windows/Mac/Li
目前 5.1.5 版本或 STLPort CVS 存储库似乎仍不支持 VS2008。如果有人已经完成了这项工作,那么如果可能的话,分享会很有用:) 同样,了解 VS2005 或 2008 x64 构建
我有一个 Python 2.7 项目,到目前为止一直使用 gfortran 和 MinGW 来构建扩展。我使用 MinGW,因为它似乎支持 Fortran 代码中的写入语句和可分配数组,而 MSVC
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 9年前关闭。 Improve this que
我想知道为什么在 Zimbra Wiki 中只列出了构建过程的特定平台。这意味着不可能在其他 Linux 发行版上构建 Zimbra? Zimbra 社区选择一个特殊的 Linux 发行版来构建 Zi
我将在 Swift 中构建一个 CLI 工具。我用这个命令创建了项目 swift package init --type executable当我构建我的项目并解析 时读取别名 Xcode 中的参数并
我想为添加到 docker 镜像的文件设置文件权限。我有这个简单的 Dockerfile: FROM ubuntu:utopic WORKDIR /app RUN groupadd -g 1000 b
当我使用 clBuildProgram在我的 OpenCl 代码中,它失败并显示错误代码 -11,没有任何日志信息。 这是我的代码的样子: ret = clBuildProgram(program
我有一个底部导航栏,它有一个列表页面,该页面使用状态块。 class _MainPageState extends State { int _index = 0; @override Wi
我在本地计算机上使用Jenkins(Jenkins URL未通过Internet公开,但该计算机上已启用Internet。) 我进行了以下配置更改: 在Jenkins工具上安装了Git和Github插
我是一名优秀的程序员,十分优秀!