An image is the consistent base for a set of environments. Images contain the language versions, tooling, and other dependencies needed to work on a project. A user should be able to create an environment from an image and immediately start contributing to the project that it's defined for.
Images are docker images that have been imported into the platform from a registry that you've hooked into Coder Enterprise. The Dockerfile for these images can be source controlled in your project's repository to provide your organization with development environments as code.
An image consists of a series of image tags that correspond to different versions of the image.
All docker images are based on a base image. These base images act as parents in an image hierarchy structure. Any image that extends one of these base images with customizations are considered descendants of the base image. These descendant images contain all of the original tooling and configuration that were originally installed into the parent base image along with their own installed customizations.
With Coder Enterprise, your organization can structure your image hierarchy in any way you desire. However, as a guideline, we've seen organizations have great success by defining a set of organization wide base images that all project images are created from.
These base images should extend common open source base images, but can contain security patches, organization wide utilities and configuration that project images will get by default when extending off of them. The project images can then add their own dependencies and requirements while gaining all of the benefits and customizations of the organization's base image.
To add additional tooling and configuration to an image, you can extend any base images using
a Dockerfile and
setting the FROM
to point to the specific base image you want to extend. For example, if you wanted to extend
an ubuntu base image, your Dockerfile's
FROM would look like the following:
After extending the base image, your custom image should be pushed up to the docker registry
cemanager is hooked into.
Any image that has been pushed to a registry that you've hooked into Coder Enterprise can be imported into the platform.
There are a few requirements for a base image:
To import an image, navigate to the
Images page and select the
Import Image button in the upper right hand
corner of the page. Select the registry where the image is hosted and the repo name where
the image can be pulled from. By default this will import the image's
To import a specific tag into your Coder Enterprise deployment, go to the
Images page, select the image you want
to add a specific tag for, and select the
Add Tag button. Put in the tag name you'd like to import and then select
The end developer is in charge of their environment. When they're outdated, a visual indicator appears in the dashboard so they're constantly nudged to update.
One can see the environments on each image tag while listing or inspecting an image's tags. This helps the team understand divergence in real time, and allows teammates to nudge eachother to update.
Individual users or an entire team can be given access to an image as readers or writers. A writer can update the image description, add tags, and delete the image.
To grant or revoke permissions for an image, navigate to the
Images page and select the image you'd like to
modify permissions for. Select the
Permissions tab underneath the image name on the
To add a team, select the
Add Team button, choose the team(s) to grant access to, select whether they should
be readers or writers, and then select
To add a user, select the
Add User button, choose the user(s) to grant access to, select whether they should
be readers or writers, and then select
To revoke access to a user or team, click the
Remove button next to the user or team.