{"id":332,"date":"2020-09-28T14:42:00","date_gmt":"2020-09-28T14:42:00","guid":{"rendered":"https:\/\/www.simplybusiness.co.uk\/docker-build-observability\/"},"modified":"2024-05-30T11:03:03","modified_gmt":"2024-05-30T11:03:03","slug":"docker-build-observability","status":"publish","type":"post","link":"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability","title":{"rendered":"Improving monitoring and observability of Docker build times"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">It can be difficult to understand what is going on under the hood in the Docker Build process, especially in complex multi-stage builds. There are many solutions available for observing running Docker containers, but limited options for observing Docker builds.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Context<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The time required to build the Docker image for our core software product at Simply Business has been slowly creeping up over the years. The application tooling team was tasked with optimising our Docker images for faster build times. This would reduce the time it takes to deploy code to production, speed up feedback cycles for code under development, and we thought it might impact developer happiness too.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The problem<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Measuring improvement is not straightforward<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">There are several reasons why simply measuring total build time for Docker images is not granular enough for our use case. We use several different caching strategies, and have network variability and other random sources of latency to account for, which combined can cause significant fluctuations in build times.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Let&#8217;s look at a super simple example that illustrates this:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Original Dockerfile<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-dark-800-background-color has-text-color has-background has-link-color wp-elements-4493684a7bc4b419fdbd52a68eea89c6\" style=\"border-radius:8px;padding-top:var(--wp--preset--spacing--30);padding-right:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30)\"><code>FROM scratch\nCOPY \/ .\n# do some other stuff...\nCMD &#091;\u201cecho\u201d,\u201dImage created\u201d]<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Optimised Dockerfile<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-dark-800-background-color has-text-color has-background has-link-color wp-elements-ac6c9e7399be3a679aa5dc1207a35d37\" style=\"border-radius:8px;padding-top:var(--wp--preset--spacing--30);padding-right:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30)\"><code>FROM scratch\nCOPY \/lib .\n# do some other stuff...\nCMD &#091;\u201cecho\u201d,\u201dImage created\u201d]<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Instead of copying the whole directory&nbsp;<code>COPY \/ .<\/code>, we are now only copying a subdirectory&nbsp;<code>lib<\/code>&nbsp;with the files we care about onto our final image. The time wasted copying over tests, scripts and assets has been saved. However, since we are using Docker&#8217;s built-in layer caching, we&#8217;ll get cache misses starting from the second line all the way to the end of the file. This means on the first run, the optimised image may take longer to build than the original! No problem, we can just run the build a second time; we&#8217;ll get all the advantages of caching this time. But wait, the build now takes almost no time at all, because we have not made any changes to our image on rerun, so we are getting cache hits for every single step. This is the optimal scenario but doesn&#8217;t reflect the much more common scenario where some part of the image has changed. We&#8217;ve made an optimisation that we think should improve our build speeds, but can&#8217;t actually measure or even validate this improvement.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The strategy<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Improve monitoring and observability<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">We wanted a more granular view of our Docker build times. Instead of looking at the overall time to build a complete image, we care much more about comparing the time to execute a single layer. And rather than looking at the times for a single build run, we are much more interested in the normative average across several production builds. Fortunately, Docker BuildKit offers some&nbsp;<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/moby\/buildkit#opentracing-support\" rel=\"noopener noreferrer\" target=\"_blank\">snazzy features<\/a>&nbsp;for improved observability using Jaeger and the OpenTracing specification. However, many parts of BuildKit are still under development, and implementation was not straightforward.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Gotcha #1: using buildctl<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">At the time of writing, OpenTracing in BuildKit is supported only with&nbsp;<code>buildctl<\/code>&nbsp;or gRPC calls to the BuildKit daemon. We were not able to view traces using our&nbsp;<code>docker-compose<\/code>&nbsp;configuration or even the standard&nbsp;<code>docker build .<\/code>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Gotcha #2: running the BuildKit daemon<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">OpenTracing also requires that the BuildKit daemon (<code>buildkitd<\/code>) is running. However,&nbsp;<code>buildkitd<\/code>&nbsp;is currently only runnable on Linux systems. The majority of Simply Business engineers do their local development on MacOS, so this was our biggest barrier to successfully accessing Opentraces. We hacked around this by using&nbsp;<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/jpetazzo\/dind#docker-in-docker\" rel=\"noopener noreferrer\" target=\"_blank\">Docker in Docker<\/a>&nbsp;as a substitute Linux VM.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Gotcha #3: Jaeger tight coupling<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">The OpenTracing BuildKit feature is tightly coupled to&nbsp;<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"https:\/\/www.jaegertracing.io\/\" rel=\"noopener noreferrer\" target=\"_blank\">Jaeger<\/a>&nbsp;as a visualisation tool (even though the&nbsp;<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"https:\/\/opentracing.io\/\" rel=\"noopener noreferrer\" target=\"_blank\">OpenTracing specification<\/a>&nbsp;is vendor agnostic). At Simply Business, we prefer to consolidate our monitoring services as much as possible for simplicity. To extract the data and import it in a different visualisation tool, we used the Jaeger JSON API.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Going forward<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Keep an eye on the&nbsp;<a href=\"https:\/\/github.com\/moby\/buildkit#buildkit\" target=\"_blank\" rel=\"noreferrer noopener\" rel=\"noopener noreferrer\" target=\"_blank\">BuildKit Docs<\/a>&nbsp;for updates. As BuildKit features mature, many of these pain points may get resolved.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.tech.sb\/\" target=\"_blank\" rel=\"noreferrer noopener\" rel=\"noopener noreferrer\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"256\" src=\"https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2024\/05\/sb-tech-site-technology.webp?w=768\" alt=\"sb-tech-site-technology\" class=\"wp-image-9605\" srcset=\"https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2024\/05\/sb-tech-site-technology.webp 768w, https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2024\/05\/sb-tech-site-technology.webp?resize=150,50 150w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">The Solution<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">A step-by-step guide for viewing Opentraces from Docker builds in Jaeger<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">1) Run Linux<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">If you&#8217;re already running on a Linux system (most distributions are fine), congratulations! You can skip this step.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you&#8217;re running Windows or MacOS, you can use the Docker in Docker image.<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-dark-800-background-color has-text-color has-background has-link-color wp-elements-38e6ddc9fcd85993649dceb1f9329fc7\" style=\"border-radius:8px;padding-top:var(--wp--preset--spacing--30);padding-right:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30)\"><code>docker run -it --privileged --name docker-in-docker -d -p 16686:16686 docker:dind\ncontainer_id=`docker ps -aqf \"name=docker-in-docker\"`\n\n# copy the project into that container\ndocker cp . $container_id:\/\n\n\n# enter the docker-in-docker container\ndocker exec -it $container_id \/bin\/sh<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Notice we need to expose port&nbsp;<code>16686<\/code>&nbsp;to access the Jaeger dashboard. This will make more sense after Step 2.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">All the steps going forward should be run from inside the Docker in Docker container unless stated otherwise.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">2) Run Jaeger<\/h4>\n\n\n\n<pre class=\"wp-block-code has-white-color has-dark-800-background-color has-text-color has-background has-link-color wp-elements-6f048f147e5875557add85b7edbfe0e1\" style=\"border-radius:8px;padding-top:var(--wp--preset--spacing--30);padding-right:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30)\"><code>docker run -e JAEGER_DISABLED=true -d -p6831:6831\/udp -p16686:16686 jaegertracing\/all-in-one:latest\nexport JAEGER_TRACE=0.0.0.0:6831<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The&nbsp;<code>JAEGER_DISABLED=true<\/code>&nbsp;flag prevents Jaeger from creating its own traces that will clutter up the dashboard. The&nbsp;<code>-p6831:6831\/udp<\/code>&nbsp;flag sets the listening port in Jaeger for receiving OpenTrace data, and&nbsp;<code>-p16686:16686<\/code>&nbsp;sets the output port for viewing the Jaeger dashboard. For a quick general overview of Docker binding ports, see&nbsp;<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"https:\/\/runnable.com\/docker\/binding-docker-ports\" rel=\"noopener noreferrer\" target=\"_blank\">this guide<\/a>. The&nbsp;<code>export JAEGER_TRACE=0.0.0.0:6831<\/code>&nbsp;command specifies the same listening port to tell BuildKit where to publish the data.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">3) Install Docker BuildKit and run the BuildKit daemon<\/h4>\n\n\n\n<pre class=\"wp-block-code has-white-color has-dark-800-background-color has-text-color has-background has-link-color wp-elements-cdacae69041481aa7748c9abb87670f2\" style=\"border-radius:8px;padding-top:var(--wp--preset--spacing--30);padding-right:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30)\"><code># install BuildKit\nwget https:\/\/github.com\/moby\/buildkit\/releases\/download\/v0.7.2\/buildkit-v0.7.2.linux-amd64.tar.gz\ntar xvfz buildkit-v0.7.2.linux-amd64.tar.gz\n\n# run BuildKit daemon (in the background)\n.\/bin\/buildkitd &amp;<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading has-medium-font-size\">4) Build the image<\/h4>\n\n\n\n<pre class=\"wp-block-code has-white-color has-dark-800-background-color has-text-color has-background has-link-color wp-elements-2fd3766ee73b48c0d91a64f12b1524b4\" style=\"border-radius:8px;padding-top:var(--wp--preset--spacing--30);padding-right:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30)\"><code>.\/bin\/buildctl build \\\n    --frontend=dockerfile.v0 \\\n    --local context=. \\\n    --local dockerfile=.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The&nbsp;<a href=\"https:\/\/github.com\/moby\/buildkit#exploring-dockerfiles\" target=\"_blank\" rel=\"noreferrer noopener\" rel=\"noopener noreferrer\" target=\"_blank\"><code>--frontend<\/code>&nbsp;flag<\/a>&nbsp;specifies how to convert the build definition into the intermediate binary (called an&nbsp;<a href=\"https:\/\/github.com\/moby\/buildkit#exploring-llb\" target=\"_blank\" rel=\"noreferrer noopener\" rel=\"noopener noreferrer\" target=\"_blank\">LLB<\/a>) that BuildKit expects. The&nbsp;<a href=\"https:\/\/github.com\/moby\/buildkit#building-a-dockerfile-with-buildctl\" target=\"_blank\" rel=\"noreferrer noopener\" rel=\"noopener noreferrer\" target=\"_blank\"><code>--local<\/code>&nbsp;flag<\/a>&nbsp;exposes local files from the source to the builder, and both&nbsp;<code>context<\/code>&nbsp;and&nbsp;<code>dockerfile<\/code>&nbsp;are required. It is also possible to optionally pass build arguments with the&nbsp;<code>--opt<\/code>&nbsp;flag:<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-dark-800-background-color has-text-color has-background has-link-color wp-elements-61e46d19870dfc4a21ecfa1de29ac630\" style=\"border-radius:8px;padding-top:var(--wp--preset--spacing--30);padding-right:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30)\"><code>--opt build-arg:foo=bar<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading has-medium-font-size\">5) View results<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">View the traces in the browser at <code>localhost:16686<\/code> or extract them via the JSON API. If you&#8217;re running Docker in Docker, this is accessible from <em>outside<\/em> the container.<\/p>\n\n\n\n<pre class=\"wp-block-code has-white-color has-dark-800-background-color has-text-color has-background has-link-color wp-elements-fd22487c6bde904ef2cc8d6134194d87\" style=\"border-radius:8px;padding-top:var(--wp--preset--spacing--30);padding-right:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30)\"><code>curl http:\/\/localhost:16686\/api\/traces?service=buildkitd | jq '.data'<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"font-size:25px\">The complete script<\/h3>\n\n\n\n<pre class=\"wp-block-code has-white-color has-dark-800-background-color has-text-color has-background has-link-color wp-elements-5cb4590bcf3c648eaccfb93df09b924b\" style=\"border-radius:8px;padding-top:var(--wp--preset--spacing--30);padding-right:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30)\"><code># run parent docker container (hack so we have a linux system)\ndocker run -it --privileged --name docker-in-docker -d -p 16686:16686 docker:dind\ncontainer_id=`docker ps -aqf \"name=docker-in-docker\"`\n\n# copy the project into that container\ndocker cp . $container_id:\/\n\n# enter that container\ndocker exec -it $container_id \/bin\/sh\n\n# install and run jaeger listener\ndocker run -e JAEGER_DISABLED=true -d -p6831:6831\/udp -p16686:16686 jaegertracing\/all-in-one:latest\nexport JAEGER_TRACE=0.0.0.0:6831\n\n# install BuildKit\nwget https:\/\/github.com\/moby\/buildkit\/releases\/download\/v0.7.2\/buildkit-v0.7.2.linux-amd64.tar.gz\ntar xvfz buildkit-v0.7.2.linux-amd64.tar.gz\n\n# run BuildKit daemon (in the background)\n.\/bin\/buildkitd &amp;\n\n# build the Dockerfile using buildctl\n.\/bin\/buildctl build \\\n    --frontend=dockerfile.v0 \\\n    --local context=. \\\n    --local dockerfile=.<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">The results<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Analyzing Opentraces<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Revisiting the original example, we can now view the Jaeger dashboard at&nbsp;<code>http:\/\/localhost:16686\/<\/code>&nbsp;and understand exactly how much impact our optimisations have. Just to illustrate the point, we used a project with a very small&nbsp;<code>lib\/<\/code>&nbsp;folder and included an additional 1 Gigabyte of cat photos in a different subdirectory<sup>*<\/sup>.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"670\" height=\"178\" src=\"https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2020\/09\/project.webp?w=670\" alt=\"project\" class=\"wp-image-12771\" srcset=\"https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2020\/09\/project.webp 670w, https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2020\/09\/project.webp?resize=150,40 150w\" sizes=\"auto, (max-width: 670px) 100vw, 670px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">In the original Dockerfile, Jaeger tells us that the&nbsp;<code>COPY . \/<\/code>&nbsp;layer took 4.5 seconds to build, and was only able to start after the build context had loaded, which took 12 seconds. The overall build of this ultra-simple 3 line Dockerfile took about 17 seconds.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" height=\"528\" width=\"1024\" src=\"https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2020\/09\/original-jaeger-trace.webp?w=1024\" alt=\"original-jaeger-trace\" class=\"wp-image-12774\" srcset=\"https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2020\/09\/original-jaeger-trace.webp 1152w, https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2020\/09\/original-jaeger-trace.webp?resize=800,413 800w, https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2020\/09\/original-jaeger-trace.webp?resize=768,396 768w, https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2020\/09\/original-jaeger-trace.webp?resize=1024,528 1024w, https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2020\/09\/original-jaeger-trace.webp?resize=150,77 150w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">After reducing the volume of data to copy over, Jaeger traces show the new command&nbsp;<code>COPY lib\/ \/<\/code>&nbsp;took only 26 milliseconds. Even more significant is that loading the build context took less than 0.2 seconds. Total build time was 0.3 seconds.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" height=\"533\" width=\"1024\" src=\"https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2020\/09\/optimized-jaeger-trace.webp?w=1024\" alt=\"optimized-jaeger-trace\" class=\"wp-image-12777\" srcset=\"https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2020\/09\/optimized-jaeger-trace.webp 1152w, https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2020\/09\/optimized-jaeger-trace.webp?resize=800,417 800w, https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2020\/09\/optimized-jaeger-trace.webp?resize=768,400 768w, https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2020\/09\/optimized-jaeger-trace.webp?resize=1024,533 1024w, https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2020\/09\/optimized-jaeger-trace.webp?resize=150,78 150w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Both of these builds were run after clearing all Docker internal caches (Docker in Docker made it easy to restart the container and start from scratch). Therefore, these numbers represent worst-case-scenario build times.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Obviously, for this trivial example we don&#8217;t&nbsp;<em>need<\/em>&nbsp;the granularity of OpenTracing to see that we&#8217;ve made improvements. However, it does help us measure and understand exactly what has improved and by how much. In a significantly more complex Docker configuration with multiple stages and many more layers, these insights become invaluable.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">* In real life these might be replaced by testing scripts or assets. Or you may just have a lot of cat photos. We don&#8217;t judge.<\/p>\n\n\n\n<div id=\"nba-upsell-001\" class=\"wp-block-group has-azure-200-background-color has-background has-global-padding is-layout-constrained wp-container-core-group-is-layout-94e519ba wp-block-group-is-layout-constrained\" style=\"padding-top:var(--wp--preset--spacing--80);padding-right:var(--wp--preset--spacing--40);padding-bottom:var(--wp--preset--spacing--80);padding-left:var(--wp--preset--spacing--40)\">\n<h3 class=\"wp-block-heading has-text-align-center\">Ready to start your career at Simply Business?<\/h3>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\">Want to know more about what it&#8217;s like to work in tech at Simply Business? Read about our approach to tech, then check out our current vacancies.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-a89b3969 wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button has-custom-font-size has-medium-font-size\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/www.simplybusiness.co.uk\/about-us\/careers\/tech\/\" style=\"padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--30)\">Find out more<\/a><\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-azure-800-color has-azure-200-background-color has-text-color has-background has-link-color wp-elements-742fdc2e97df25eb9ebc6b1e70f77d16 has-global-padding is-layout-constrained wp-container-core-group-is-layout-80fb368b wp-block-group-is-layout-constrained\" style=\"border-radius:8px;padding-top:var(--wp--preset--spacing--30);padding-right:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30)\">\n<p class=\"has-text-align-center has-xxs-font-size wp-block-paragraph\">We create this content for general information purposes and it should not be taken as advice. Always take professional advice.&nbsp;<a href=\"https:\/\/www.simplybusiness.co.uk\/legal\/knowledge-centre-disclaimer\/\">Read our full disclaimer<\/a><\/p>\n<\/div>\n\n\n\n<div id=\"newsletter-subscribe\" class=\"wp-block-group newsletter-subscribe is-layout-flow wp-block-group-is-layout-flow wp-block-block\" style=\"border-top-color:#cccccc;border-top-width:1px;padding-top:var(--wp--preset--spacing--80);padding-right:0;padding-bottom:var(--wp--preset--spacing--80);padding-left:0\">\n<p class=\"has-text-align-center has-dark-800-color has-text-color has-link-color has-medium-font-size wp-elements-ced002c3d2e03fde51d8880b5da0f3bb wp-block-paragraph\" style=\"margin-bottom:var(--wp--preset--spacing--50)\">A free monthly newsletter with the latest news and tools for small businesses and landlords.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-222c5d1d wp-block-buttons-is-layout-flex\" style=\"margin-bottom:var(--wp--preset--spacing--50)\">\n<div class=\"wp-block-button is-style-outline has-size-medium is-style-outline--1\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/www.simplybusiness.co.uk\/about-us\/newsletter-signup\/\">Subscribe to our newsletter<\/a><\/div>\n<\/div>\n\n\n\n<ul class=\"wp-block-social-links has-small-icon-size is-style-logos-only is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-a89b3969 wp-block-social-links-is-layout-flex\"><li class=\"wp-social-link wp-social-link-facebook  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.facebook.com\/simplybusiness\" class=\"wp-block-social-link-anchor\" rel=\"noopener noreferrer\" target=\"_blank\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Follow Simply Business on Facebook<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-x  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.x.com\/simplybusiness\" class=\"wp-block-social-link-anchor\" rel=\"noopener noreferrer\" target=\"_blank\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z\" \/><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Follow Simply Business on X<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-youtube  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.youtube.com\/user\/simplybusiness\" class=\"wp-block-social-link-anchor\" rel=\"noopener noreferrer\" target=\"_blank\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Subscribe to Simply Business Videos on Youtube<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-linkedin  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.linkedin.com\/company\/simply-business_39914\" class=\"wp-block-social-link-anchor\" rel=\"noopener noreferrer\" target=\"_blank\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Follow Simply Business on LinkedIn<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-instagram  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.instagram.com\/simplybusiness\" class=\"wp-block-social-link-anchor\" rel=\"noopener noreferrer\" target=\"_blank\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12,4.622c2.403,0,2.688,0.009,3.637,0.052c0.877,0.04,1.354,0.187,1.671,0.31c0.42,0.163,0.72,0.358,1.035,0.673 c0.315,0.315,0.51,0.615,0.673,1.035c0.123,0.317,0.27,0.794,0.31,1.671c0.043,0.949,0.052,1.234,0.052,3.637 s-0.009,2.688-0.052,3.637c-0.04,0.877-0.187,1.354-0.31,1.671c-0.163,0.42-0.358,0.72-0.673,1.035 c-0.315,0.315-0.615,0.51-1.035,0.673c-0.317,0.123-0.794,0.27-1.671,0.31c-0.949,0.043-1.233,0.052-3.637,0.052 s-2.688-0.009-3.637-0.052c-0.877-0.04-1.354-0.187-1.671-0.31c-0.42-0.163-0.72-0.358-1.035-0.673 c-0.315-0.315-0.51-0.615-0.673-1.035c-0.123-0.317-0.27-0.794-0.31-1.671C4.631,14.688,4.622,14.403,4.622,12 s0.009-2.688,0.052-3.637c0.04-0.877,0.187-1.354,0.31-1.671c0.163-0.42,0.358-0.72,0.673-1.035 c0.315-0.315,0.615-0.51,1.035-0.673c0.317-0.123,0.794-0.27,1.671-0.31C9.312,4.631,9.597,4.622,12,4.622 M12,3 C9.556,3,9.249,3.01,8.289,3.054C7.331,3.098,6.677,3.25,6.105,3.472C5.513,3.702,5.011,4.01,4.511,4.511 c-0.5,0.5-0.808,1.002-1.038,1.594C3.25,6.677,3.098,7.331,3.054,8.289C3.01,9.249,3,9.556,3,12c0,2.444,0.01,2.751,0.054,3.711 c0.044,0.958,0.196,1.612,0.418,2.185c0.23,0.592,0.538,1.094,1.038,1.594c0.5,0.5,1.002,0.808,1.594,1.038 c0.572,0.222,1.227,0.375,2.185,0.418C9.249,20.99,9.556,21,12,21s2.751-0.01,3.711-0.054c0.958-0.044,1.612-0.196,2.185-0.418 c0.592-0.23,1.094-0.538,1.594-1.038c0.5-0.5,0.808-1.002,1.038-1.594c0.222-0.572,0.375-1.227,0.418-2.185 C20.99,14.751,21,14.444,21,12s-0.01-2.751-0.054-3.711c-0.044-0.958-0.196-1.612-0.418-2.185c-0.23-0.592-0.538-1.094-1.038-1.594 c-0.5-0.5-1.002-0.808-1.594-1.038c-0.572-0.222-1.227-0.375-2.185-0.418C14.751,3.01,14.444,3,12,3L12,3z M12,7.378 c-2.552,0-4.622,2.069-4.622,4.622S9.448,16.622,12,16.622s4.622-2.069,4.622-4.622S14.552,7.378,12,7.378z M12,15 c-1.657,0-3-1.343-3-3s1.343-3,3-3s3,1.343,3,3S13.657,15,12,15z M16.804,6.116c-0.596,0-1.08,0.484-1.08,1.08 s0.484,1.08,1.08,1.08c0.596,0,1.08-0.484,1.08-1.08S17.401,6.116,16.804,6.116z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Follow Simply Business on Instagram<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-tiktok  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.tiktok.com\/@simplybusiness\" class=\"wp-block-social-link-anchor\" rel=\"noopener noreferrer\" target=\"_blank\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 32 32\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M16.708 0.027c1.745-0.027 3.48-0.011 5.213-0.027 0.105 2.041 0.839 4.12 2.333 5.563 1.491 1.479 3.6 2.156 5.652 2.385v5.369c-1.923-0.063-3.855-0.463-5.6-1.291-0.76-0.344-1.468-0.787-2.161-1.24-0.009 3.896 0.016 7.787-0.025 11.667-0.104 1.864-0.719 3.719-1.803 5.255-1.744 2.557-4.771 4.224-7.88 4.276-1.907 0.109-3.812-0.411-5.437-1.369-2.693-1.588-4.588-4.495-4.864-7.615-0.032-0.667-0.043-1.333-0.016-1.984 0.24-2.537 1.495-4.964 3.443-6.615 2.208-1.923 5.301-2.839 8.197-2.297 0.027 1.975-0.052 3.948-0.052 5.923-1.323-0.428-2.869-0.308-4.025 0.495-0.844 0.547-1.485 1.385-1.819 2.333-0.276 0.676-0.197 1.427-0.181 2.145 0.317 2.188 2.421 4.027 4.667 3.828 1.489-0.016 2.916-0.88 3.692-2.145 0.251-0.443 0.532-0.896 0.547-1.417 0.131-2.385 0.079-4.76 0.095-7.145 0.011-5.375-0.016-10.735 0.025-16.093z\" \/><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Follow Simply Business on TikTok<\/span><\/a><\/li><\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>It can be difficult to understand what is going on under the hood in the Docker Build process, especially in complex multi-stage builds. There are many solutions available for observing running Docker containers, but limited options for observing Docker builds. Context The time required to build the Docker image for our core software product at [&hellip;]<\/p>\n","protected":false},"author":14,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"sb_hreflang":"","sb_hreflang_url":"","disable_breadcrumbs":false,"sb_breadcrumbs":[],"footnotes":""},"tags":[],"hidden-category":[],"coauthors":[241],"class_list":["post-332","post","type-post","status-publish","format-standard","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Improving monitoring and observability of Docker build times<\/title>\n<meta name=\"description\" content=\"Strategies for using the OpenTracing specification and Jaeger visualisation for improved monitoring and observability of Docker build times\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Improving monitoring and observability of Docker build times\" \/>\n<meta property=\"og:description\" content=\"Strategies for using the OpenTracing specification and Jaeger visualisation for improved monitoring and observability of Docker build times\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/\" \/>\n<meta property=\"og:site_name\" content=\"Simply Business UK\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/simplybusiness\" \/>\n<meta property=\"article:published_time\" content=\"2020-09-28T14:42:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-30T11:03:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2024\/06\/observability-docker.jpg\" \/>\n<meta name=\"author\" content=\"Nicole Rifkin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@simplybusiness\" \/>\n<meta name=\"twitter:site\" content=\"@simplybusiness\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nicole Rifkin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/\"},\"author\":{\"@type\":\"Person\",\"name\":\"Nicole Rifkin\",\"description\":\"\"},\"headline\":\"Improving monitoring and observability of Docker build times\",\"datePublished\":\"2020-09-28T14:42:00+00:00\",\"dateModified\":\"2024-05-30T11:03:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/\"},\"wordCount\":1241,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.simplybusiness.co.uk\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2024\/05\/sb-tech-site-technology.webp?w=768\",\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/\",\"url\":\"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/\",\"name\":\"Improving monitoring and observability of Docker build times\",\"isPartOf\":{\"@id\":\"https:\/\/www.simplybusiness.co.uk\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2024\/05\/sb-tech-site-technology.webp?w=768\",\"datePublished\":\"2020-09-28T14:42:00+00:00\",\"dateModified\":\"2024-05-30T11:03:03+00:00\",\"description\":\"Strategies for using the OpenTracing specification and Jaeger visualisation for improved monitoring and observability of Docker build times\",\"breadcrumb\":{\"@id\":\"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/#primaryimage\",\"url\":\"https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2024\/05\/sb-tech-site-technology.webp\",\"contentUrl\":\"https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2024\/05\/sb-tech-site-technology.webp\",\"width\":768,\"height\":256,\"caption\":\"sb-tech-site-technology\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.simplybusiness.co.uk\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Improving monitoring and observability of Docker build times\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.simplybusiness.co.uk\/#website\",\"url\":\"https:\/\/www.simplybusiness.co.uk\/\",\"name\":\"Simply Business UK\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.simplybusiness.co.uk\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.simplybusiness.co.uk\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.simplybusiness.co.uk\/#\/schema\/person\/77f91625e7ec1b88a7fca8910ce6c69f\",\"name\":\"rishvashah\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/www.simplybusiness.co.uk\/wp-content\/themes\/simply-business\/dist\/images\/default-author-avatar.webp9df6147f02078f0218660330fdfbacf3\",\"url\":\"https:\/\/www.simplybusiness.co.uk\/wp-content\/themes\/simply-business\/dist\/images\/default-author-avatar.webp\",\"contentUrl\":\"https:\/\/www.simplybusiness.co.uk\/wp-content\/themes\/simply-business\/dist\/images\/default-author-avatar.webp\",\"caption\":\"rishvashah\"}},{\"@type\":\"PostalAddress\",\"@id\":\"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/#local-main-place-address\",\"streetAddress\":\"Hylo, 105 Bunhill Row\",\"addressLocality\":\"London\",\"postalCode\":\"EC1Y 8LZ\",\"addressCountry\":\"GB\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/#local-main-organization-logo\",\"url\":\"https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2024\/05\/logo.png\",\"contentUrl\":\"https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2024\/05\/logo.png\",\"width\":533,\"height\":187,\"caption\":\"Simply Business UK\"}]}<\/script>\n<meta name=\"geo.placename\" content=\"London\" \/>\n<meta name=\"geo.region\" content=\"United Kingdom (UK)\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Improving monitoring and observability of Docker build times","description":"Strategies for using the OpenTracing specification and Jaeger visualisation for improved monitoring and observability of Docker build times","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/","og_locale":"en_GB","og_type":"article","og_title":"Improving monitoring and observability of Docker build times","og_description":"Strategies for using the OpenTracing specification and Jaeger visualisation for improved monitoring and observability of Docker build times","og_url":"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/","og_site_name":"Simply Business UK","article_publisher":"https:\/\/www.facebook.com\/simplybusiness","article_published_time":"2020-09-28T14:42:00+00:00","article_modified_time":"2024-05-30T11:03:03+00:00","og_image":[{"url":"https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2024\/06\/observability-docker.jpg","type":"","width":"","height":""}],"author":"Nicole Rifkin","twitter_card":"summary_large_image","twitter_creator":"@simplybusiness","twitter_site":"@simplybusiness","twitter_misc":{"Written by":"Nicole Rifkin","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/#article","isPartOf":{"@id":"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/"},"author":{"@type":"Person","name":"Nicole Rifkin","description":""},"headline":"Improving monitoring and observability of Docker build times","datePublished":"2020-09-28T14:42:00+00:00","dateModified":"2024-05-30T11:03:03+00:00","mainEntityOfPage":{"@id":"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/"},"wordCount":1241,"commentCount":0,"publisher":{"@id":"https:\/\/www.simplybusiness.co.uk\/#organization"},"image":{"@id":"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/#primaryimage"},"thumbnailUrl":"https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2024\/05\/sb-tech-site-technology.webp?w=768","inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/","url":"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/","name":"Improving monitoring and observability of Docker build times","isPartOf":{"@id":"https:\/\/www.simplybusiness.co.uk\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/#primaryimage"},"image":{"@id":"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/#primaryimage"},"thumbnailUrl":"https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2024\/05\/sb-tech-site-technology.webp?w=768","datePublished":"2020-09-28T14:42:00+00:00","dateModified":"2024-05-30T11:03:03+00:00","description":"Strategies for using the OpenTracing specification and Jaeger visualisation for improved monitoring and observability of Docker build times","breadcrumb":{"@id":"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/#primaryimage","url":"https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2024\/05\/sb-tech-site-technology.webp","contentUrl":"https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2024\/05\/sb-tech-site-technology.webp","width":768,"height":256,"caption":"sb-tech-site-technology"},{"@type":"BreadcrumbList","@id":"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.simplybusiness.co.uk\/"},{"@type":"ListItem","position":2,"name":"Improving monitoring and observability of Docker build times"}]},{"@type":"WebSite","@id":"https:\/\/www.simplybusiness.co.uk\/#website","url":"https:\/\/www.simplybusiness.co.uk\/","name":"Simply Business UK","description":"","publisher":{"@id":"https:\/\/www.simplybusiness.co.uk\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.simplybusiness.co.uk\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Person","@id":"https:\/\/www.simplybusiness.co.uk\/#\/schema\/person\/77f91625e7ec1b88a7fca8910ce6c69f","name":"rishvashah","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.simplybusiness.co.uk\/wp-content\/themes\/simply-business\/dist\/images\/default-author-avatar.webp9df6147f02078f0218660330fdfbacf3","url":"https:\/\/www.simplybusiness.co.uk\/wp-content\/themes\/simply-business\/dist\/images\/default-author-avatar.webp","contentUrl":"https:\/\/www.simplybusiness.co.uk\/wp-content\/themes\/simply-business\/dist\/images\/default-author-avatar.webp","caption":"rishvashah"}},{"@type":"PostalAddress","@id":"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/#local-main-place-address","streetAddress":"Hylo, 105 Bunhill Row","addressLocality":"London","postalCode":"EC1Y 8LZ","addressCountry":"GB"},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability\/#local-main-organization-logo","url":"https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2024\/05\/logo.png","contentUrl":"https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2024\/05\/logo.png","width":533,"height":187,"caption":"Simply Business UK"}]},"geo.placename":"London","geo.region":"United Kingdom (UK)"},"parsely":{"version":"1.1.0","canonical_url":"https:\/\/simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability","smart_links":{"inbound":0,"outbound":0},"traffic_boost_suggestions_count":0,"meta":{"@context":"https:\/\/schema.org","@type":"NewsArticle","headline":"Improving monitoring and observability of Docker build times","url":"http:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability","mainEntityOfPage":{"@type":"WebPage","@id":"http:\/\/www.simplybusiness.co.uk\/about-us\/tech\/2020\/09\/docker-build-observability"},"thumbnailUrl":"","image":{"@type":"ImageObject","url":""},"articleSection":"Uncategorised","author":[{"@type":"Person","name":"Nicole Rifkin"}],"creator":["Nicole Rifkin"],"publisher":{"@type":"Organization","name":"Simply Business UK","logo":"https:\/\/www.simplybusiness.co.uk\/wp-content\/uploads\/sites\/3\/2024\/04\/icon-512x512-1.png"},"keywords":[],"dateCreated":"2020-09-28T14:42:00Z","datePublished":"2020-09-28T14:42:00Z","dateModified":"2024-05-30T11:03:03Z"},"rendered":"<script type=\"application\/ld+json\" class=\"wp-parsely-metadata\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@type\":\"NewsArticle\",\"headline\":\"Improving monitoring and observability of Docker build times\",\"url\":\"http:\\\/\\\/www.simplybusiness.co.uk\\\/about-us\\\/tech\\\/2020\\\/09\\\/docker-build-observability\",\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"http:\\\/\\\/www.simplybusiness.co.uk\\\/about-us\\\/tech\\\/2020\\\/09\\\/docker-build-observability\"},\"thumbnailUrl\":\"\",\"image\":{\"@type\":\"ImageObject\",\"url\":\"\"},\"articleSection\":\"Uncategorised\",\"author\":[{\"@type\":\"Person\",\"name\":\"Nicole Rifkin\"}],\"creator\":[\"Nicole Rifkin\"],\"publisher\":{\"@type\":\"Organization\",\"name\":\"Simply Business UK\",\"logo\":\"https:\\\/\\\/www.simplybusiness.co.uk\\\/wp-content\\\/uploads\\\/sites\\\/3\\\/2024\\\/04\\\/icon-512x512-1.png\"},\"keywords\":[],\"dateCreated\":\"2020-09-28T14:42:00Z\",\"datePublished\":\"2020-09-28T14:42:00Z\",\"dateModified\":\"2024-05-30T11:03:03Z\"}<\/script>","tracker_url":"https:\/\/cdn.parsely.com\/keys\/simplybusiness.co.uk\/p.js"},"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/www.simplybusiness.co.uk\/wp-json\/wp\/v2\/posts\/332","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.simplybusiness.co.uk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.simplybusiness.co.uk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.simplybusiness.co.uk\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/www.simplybusiness.co.uk\/wp-json\/wp\/v2\/comments?post=332"}],"version-history":[{"count":23,"href":"https:\/\/www.simplybusiness.co.uk\/wp-json\/wp\/v2\/posts\/332\/revisions"}],"predecessor-version":[{"id":13104,"href":"https:\/\/www.simplybusiness.co.uk\/wp-json\/wp\/v2\/posts\/332\/revisions\/13104"}],"wp:attachment":[{"href":"https:\/\/www.simplybusiness.co.uk\/wp-json\/wp\/v2\/media?parent=332"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.simplybusiness.co.uk\/wp-json\/wp\/v2\/tags?post=332"},{"taxonomy":"hidden-category","embeddable":true,"href":"https:\/\/www.simplybusiness.co.uk\/wp-json\/wp\/v2\/hidden-category?post=332"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.simplybusiness.co.uk\/wp-json\/wp\/v2\/coauthors?post=332"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}