Azure-devops-docs: Are there existing Docker Images provided as with https://mcr.microsoft.com/v2/azure-pipelines/vsts-agent/tags/list

Created on 28 Jan 2020  Â·  9Comments  Â·  Source: MicrosoftDocs/azure-devops-docs

Are the Docker Hub images still managed maintained and up to date?

https://hub.docker.com/_/microsoft-azure-pipelines-vsts-agent

Is there another location where the Agent is pushed to a pre-built container image?

The syndication points to https://mcr.microsoft.com/v2/azure-pipelines/vsts-agent/tags/list -- but is this updated?


Document Details

⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

Pri1 devops-cictech devopprod doc-bug stale-issue

Most helpful comment

I would also like to see some pre-built images that I can pull down from Docker Hub, it would make spinning up an agent so much easier, especially if it had all the base tools needed like JDK and Maven etc.

All 9 comments

I would also like to see some pre-built images that I can pull down from Docker Hub, it would make spinning up an agent so much easier, especially if it had all the base tools needed like JDK and Maven etc.

+1

+1 for pre-built images.

There are scripts for Windows dev environment images in: https://github.com/actions/virtual-environments - these look like the base for the hosted pipeline agents.

There are also packer images here: https://github.com/Microsoft/azure-pipelines-image-generation.

The packer images are the definitions of the 'official' AzDO agents and are the unit of maintenance for Microsoft-hosted agents, iiuc.

If you're not aware, Packer supports Docker images as a build target, so "theoretically" you could "just" start from a plain ubuntu base image from dockerhub and build the packerfile into a new image and publish it. In practice, I've found the biggest difficulties are:

  • docker installation and testing is now docker-in-docker, which gets messy no matter how you cut it.
    Hopefully podman/buildah or some other solution can come through as a true usermode container runtime replacement for docker; but for now there are too many incompatibilities and missing features to make it a transparent drop-in replacement in areas where full range of behavior of docker is exposed to the end user (aka build pipelines).
  • Some of the pre-installed packages are enormous and unlikely to be used universally, like Android.
    It's reasonable for MS to put them in the base packerfile definition since they're managing the hosting and are willing to pay the overhead of building/running all agents with it, but adding 2+GB to your images just so your agents can run android builds when you don't build any mobile apps at all is just too much overhead for your average project.
  • The image literally takes hours to build on a full VM, and any random failure during build (unfortunately common when I tried) invalidates the whole build, making iteration on the definition painful.
  • Even if you were willing to make changes to the definition like omitting Android or swapping Docker for Podman, the packerfiles are not designed to be configurable so you'll be maintaining these differences as patches on the original repo and require continuous maintenance to keep them up to date. I'm unsure if azure-pipelines-image-generation would accept patches just to make the images more compatible with a container image build.

+1

+1. any answers from MSFT?

+1. I guess this method outlined is only useful if we have any specific needs for having a custom image that needs tools that MSFT don't have in their base image and not easy to maintain on the hosted platform. It does not look like they are keen on allowing users to extend their base agent for pipeline for this.

This issue hasn't been updated in more than 180 days, so we've closed it. If you feel the issue is still relevant and needs fixed, please reopen it and we'll take another look. We appreciate your feedback and apologize for any inconvenience.

Was this page helpful?
0 / 5 - 0 ratings