<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Docker on Hanh Pham's Blog</title><link>https://hanhpham.vercel.app/tags/docker/</link><description>Recent content in Docker on Hanh Pham's Blog</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 02 Oct 2026 09:00:00 +0700</lastBuildDate><atom:link href="https://hanhpham.vercel.app/tags/docker/index.xml" rel="self" type="application/rss+xml"/><item><title>Docker BuildKit in CI: The Economics of Network I/O vs CPU Compilation</title><link>https://hanhpham.vercel.app/posts/docker-buildkit-caching-economics-in-ci/</link><pubDate>Fri, 02 Oct 2026 09:00:00 +0700</pubDate><guid>https://hanhpham.vercel.app/posts/docker-buildkit-caching-economics-in-ci/</guid><description>Enabling remote layer caching in CI often slows builds down instead of speeding them up. Here is how network transit limits, cache thrashing, and local NVMe runners dictate the real economics of container builds.</description></item><item><title>Self-Hosting a Routing Engine Instead of Paying Per API Call</title><link>https://hanhpham.vercel.app/posts/self-hosting-a-routing-engine/</link><pubDate>Tue, 21 Jul 2026 14:00:00 +0700</pubDate><guid>https://hanhpham.vercel.app/posts/self-hosting-a-routing-engine/</guid><description>Road distance, not straight-line distance, is what travel expense claims and delivery pricing actually need, here&amp;rsquo;s how to get it without a metered maps API.</description></item></channel></rss>