Remote Docker Image Deprecations and EOL for 2024

Hello :wave:

We are deprecating the following Remote Docker images on CircleCI and will be removing them from our platform on Sept 30, 2024:

Remote Docker (setup_remote_docker) versions

  • 17.05.0-ce
  • 17.06.0-ce
  • 17.06.1-ce
  • 17.07.0-ce
  • 17.09.0-ce
  • 17.10.0-ce
  • 17.11.0-ce
  • 17.12.0-ce
  • 17.12.1-ce
  • 18.01.0-ce
  • 18.02.0-ce
  • 18.03.0-ce
  • 18.03.1-ce
  • 18.04.0-ce
  • 18.05.0-ce
  • 18.06.0-ce
  • 18.09.3
  • 19.03.8
  • 17.03.0-ce
  • 19.03.12 (ubuntu-2004:202008-01)
  • 19.03.13 (ubuntu-2004:202008-01)
  • 19.03.14 (ubuntu-2004:202008-01)
  • 20.10.2 (ubuntu-2004:202101-01)
  • 20.10.6 (ubuntu-2004:202104-01)
  • 20.10.7 (ubuntu-2004:202107-02)
  • 20.10.11 (ubuntu-2004:202111-01)
  • 20.10.12 (ubuntu-2004:202201-02)
  • 20.10.14 (ubuntu-2204:2022.04.2)
  • 20.10.17 (ubuntu-2204:2022.07.2)
  • 20.10.18 (ubuntu-2204:2022.10.1)
  • 20.10.23 (ubuntu-2204:2023.02.1)

Once an image is removed, the CircleCI jobs that use that image will fail with an error message - This job was rejected because the image is unavailable.

CircleCI will email impacted users with a list of projects that must be updated before the EOL date.

Why are these images being deprecated?

To ensure pipelines on CircleCI run with the highest level of reliability & security.

What do I need to do?

You will need to update your CircleCI config to use a valid Remote Docker image as per the tagging conventions in our Remote Docker Image Policy.

The recommended tags to use are as follows:

  • default - Docker 24
  • previous - Previous default version
  • edge - Development image of latest Docker version
  • docker23 - Docker 23

A couple examples:

Before:

steps:
    - checkout
    - setup_remote_docker:
        version: 17.05.0-ce // any of the deprecated image tags above

After:

  • Default usage, which uses the latest stable version, which would be Docker 24
steps:
      - checkout
      - setup_remote_docker
  • Edge
steps:
  - checkout
  - setup_remote_docker:
      version: edge
  • Utilizes Docker 23
steps:
  - checkout
  - setup_remote_docker:
      version: docker23

Updating Orbs

You may need to make additional changes to your config if you are using an Orb that selects an image for you. If you’re using old and outdated versions CircleCI Orbs that use deprecated images by default you’ll need to either:

  1. Upgrade the orb to a more recent version (all most recent versions of the CircleCI orbs that use images use non-deprecated images by default). This is the recommended course of action.
  2. Ensure that you are explicitly passing in, via the appropriate Orb parameter, the name of a non deprecated image to use.

The following old versions of Orbs use depreciated images by default:

  • circleci/android 1.0.0 - 1.0.3
    • You can override the image used by this orb by passing the image-name parameter to the android-machine executor)
  • circleci/aws-ecr 7.0.0 - 9.0.1
    • You can override the image used by this orb by passing the image parameter to the default executor
  • circleci/aws-sam-serverless 2.0.0 - 6.0.0
    • You can override the image used by this orb by passing the machine_image parameter to the deploy job)
  • circleci/azure-acr 0.2.1
    • You can override the image used by this orb by passing the image parameter to the default executor
  • circleci/docker 2.0.0 - 2.2.0
    • You can override the image used by this orb by passing the image parameter to the machine executor
  • circleci/gcp-cli 2.0.0 - 2.4.1
    • You can override the image used by this orb by passing the image parameter to the machine executor
  • circleci/gcp-gcr 0.15.0 - 0.15.3
    • You can override the image used by this orb by passing the image parameter to the default executor
  • circleci/windows - 1.0.0 - 2.1.0
    • You can override the image used by this orb by passing the version parameter to the default executor

What will happen after the Sept 30 EOL Date?

If you do not currently specify a tag in the setup_remote_docker step, your job will keep the same behavior, and use the default tag automatically.

Calling any of the deprecated Docker versions directly will cause your job to fail.

Brownout Schedule and EOL

We will be conducting brownouts for the above images on the following dates and times.

  • 4 March 2024
    • 07:00 UTC → 11:00 UTC
    • 13:00 UTC → 17:00 UTC
    • 20:00 UTC → 00:00 UTC
  • 28 May 2024
    • 02:00 UTC → 10:00 UTC
    • 14:00 UTC → 22:00 UTC
  • 28 August 2024
    • 00:00 UTC → 00:00 UTC (24 Hour)
  • 17 September 2024
    • 00:00 UTC → 00:00 UTC (24 Hour)
  • 30 September 2024
    • Deprecated tags are removed and will be unavailable

During these times, all jobs calling these images will fail. Please update your configs as soon as possible to prevent any disruption to your pipelines.

The default and docker23 tags are already available for you to transition to as of writing and we highly recommend updating your config to avoid job failure during these brownouts. If you have already updated your tags, please disregard this email.

What’s Next?

Details on how we manage and maintain our Remote Docker images can be found here: Remote Docker Image Policy.

Feedback

If you have any questions, comments, or concerns, please post a reply in this thread and we will be happy to help!

Respectfully,
CircleCI Images Team

I’m getting a deprecated image warning for this (open source) build:

https://app.circleci.com/pipelines/github/clj-kondo/clj-kondo/5894/workflows/eff4ddc4-c8a5-46e0-b1bd-f50956518f88/jobs/25647

I am explicitly not using the newest Ubuntu versions since I want to build binaries against libc 2.31. When I upgrade to Ubuntu 22 I will build against libc 2.35 and then some of my users can’t run the binary on their (older) linux system.

Any advice to which docker image I can upgrade?

EDIT: actually for this remote docker step the glibc version doesn’t matter since I’m just copying binaries from the other steps. But the other steps use Ubuntu 2004 as well.

Which remote docker image is recommended?

Hi @borkdude,

You should still be able to use Ubuntu 2004 just with a newer version of the image.

Thanks,
Brent

1 Like

I tried using cimg/base:current-20.04 and I’m still getting the deprecated message in this job:

https://app.circleci.com/pipelines/github/clj-kondo/clj-kondo/5897/workflows/8e7ca1b9-852a-4e97-8d93-6a227e543da5/jobs/25664

What is being talked about in the original post is the docker based environments that CircleCI provides to allow people to deploy docker. Unless you have a need to use a dated version of docker you should just be using the default version which is the current general release, 24.

Looking at your project, the OS and so the clib you are compiling against is whatever you define in the buildfile used by your Build Docker Image step.

Hi @borkdude,

Your build looks to be using Remote Docker 20.10.11 which is the problem here.

Thanks,
Brent

I think you are mixing different parts of the config.yml

cimg/base:current-20.04 would be a value used to define the machine in your linux-aarch64 job, while this announcement is regarding the available values for ‘setup_remote_docker’ used in your docker job.

Indeed, i t turned out I had to upgrade:

      - setup_remote_docker:
          version: docker24

which was 20.10.11
but the e-mail made it seem like it was about a docker image:

We've identified that your team is currently using the following images planned for deprecation:

clj-kondo/ci/docker/ubuntu-2004:202111-01

This was kind of confusing, perhaps I misunderstood the e-mail.

Apologies for the confusion.

During these “brownouts” should we expect the builds to fail?

If so, could you be more explicit in the announcements? Given what I read, I expected a deprecation message, not an outright failure.

-Kevin

1 Like

During these brownouts images will fail. This is intended to make sure customers are aware of these deprecations and take action.

And, now that I read it more closely. I do see that message in there. My apologies @brentmmarks

It’s supposedly out of the brown out window as of 20 mins ago but all of our builds are failing. And of course we’re in a p0 monday morning situation. Any updates here?

We too are out of the brown out window, but our builds are failing on docker image version 19.03.xx . That said, what needs to change in our config file? I see 2 relevant settings …

executors:
ubuntu-small:
docker:
- {image: ‘cimg/base:2022.02’}
resource_class: small

Does cimg/base … need to change to 2024.02 ??

Or later in our workflows section …

setup-remote-docker: true
repo: nightly
dockerfile: docker-build/Dockerfile

Since setup-remote-docker does not use a version keyword, shouldn’t it pick up “default” ?

We have builds being rejected due to an image being unavailable, which is not part of the list of deprecated images mentioned above:

This job was rejected because the image ‘ubuntu-2204:2023.07.2’ is unavailable

If keyword is not provided for setup_remote_docker it will use default. We have recently pushed a change to help identify for customers which image is deprecated in their build.

Hi @rkennedy-mode,

This image is part of the linux deprecation: Linux Image Deprecations and EOL for 2024

Thanks,
Brent

I have not specifified setup_remote_docker in my config file, i’m still getting
This job was rejected because the image ‘Remote Docker version: docker-20.10.2’ is unavailable
What should be upgraded to get around this?

HI @asensf,

Are you possibly using an orb that is using remote docker?

Thanks,
Brent

Hi,

will it still be possible to use specific versions of docker like 20.10.24 but for newer version like 24.x.y ? Or it supports only mentioned tags (default, previous …) ?

EDIT: After some tries, it does not work ( I tried 24.0.1 and 24.0.9) but the docker24 does the job