Docker recently announced the general availability of their cloud-based container image builder, Docker Build Cloud. Docker Build Cloud offers a remote shared cache and native builders for AMD64 and ARM64 CPU architectures, with the goal of "improving collaboration" and decreasing image build times.
Docker is a virtualisation technology that provides a loosely isolated environment for an application at runtime. Each environment, called a container, has to be built prior to its execution on a host machine and is distributed as an immutable collection of files called an Image. Each file within the collection is referred to as a layer and is a compressed set of changes to the filesystem. The Docker Builder is responsible for converting a series of instructions in a Dockerfile to an image.
How Dockerfiles get converted to Images (Source: Docker User Guide)
Since Docker’s launch in 2013, containers have become a ubiquitous mechanism to achieve the vision of "build once, run anywhere", a notion originally made popular by Sun Microsystems to highlight the cross-platform operability of the Java language. A key enabler of this success within the Linux ecosystem has been the use of QEMU, an open-source machine emulator and virtualizer. While this allowed users to build images on a host of one CPU architecture, for example, ARM32v7, and run them on others, it also became a pain point due to the relatively slow emulation process. In late 2019, Docker introduced Remote Builders as a mechanism to resolve this challenge.
With Remote Builders, users could register a host machine accessible over mutual transport layer security (mTLS) or secure shell (SSH) as a node for building images. By registering nodes of different target architectures and referencing them during the build stage, users could now build once, or multiple times at once, and run native images without emulation. The major downside of Remote Builders at the time of the functionality’s release was the requirement of its users to set up and maintain a fleet of builder nodes. Docker Build Cloud aims to remove this operational burden by offering them as a service.
How a local Docker client uses a Remote Builder (Source: Docker Remote Builders blog post)
Docker Build Cloud nodes run as Amazon EC2 instances with dedicated EBS volumes. EC2 specification begins with 8vCPUs and 16GB of RAM for customers on Personal and Pro plans, and goes up to 16vCPU with 32GB RAM for Team and Business customers. All Docker plans include a limited number of build minutes shared across an organization, with Docker Build Cloud Team sold as an add-on starting from $5 per user per month. The Docker Build Cloud add-on offers an additional 200 build minutes per user and a 200GB shared cache across the organization. A rough cost estimate of an equivalent remote builder configuration self-hosted on AWS gave a monthly running cost of $850, which suggests that Docker Build Cloud, at $5 per user, is priced favorably towards teams with less than 170 engineers.
AWS Cost Estimate for an equivalent self-hosted configuration to Docker Build Cloud (Source: AWS Pricing Estimator)
Finally, Docker Build Cloud is currently only available in the AWS US East region, and further information on getting started can be found in the user guide.