Introduction to Dev Containers
Hands-on introduction to reproducible developer environments with Dev Containers, including AI tools, CDEs and CI for your favorite stack.
Abstract
TL;DR: Works in your IDE? Now you can ship it to your team, your PM and your CI system!
Setting up a development environment can be time-consuming and difficult to reproduce across a team. Dev Containers let you describe the base images, tools, dependencies, and editor configuration for a project as code, so developers can work in a consistent environment on their laptops or in the cloud. The same container configuration can also support automated workflows.
In this hands-on workshop, we build and customize a Dev Container for a project using a technology stack selected by the audience. We explore how to package development tools, use AI assistants and agents, and share the resulting environment across a team. We then take the environment to the cloud with GitHub Codespaces and explore how to reuse it in CI.
By the end of the session, participants will understand how to define a reproducible development environment, adapt it to their project's tooling, and use it across in local developer environment, cloud developer environments, and CI/CD pipelines.
Possible technology stacks#
Go, Python, Java, C/C++, or .NET
Workshop Structure#
I. Getting started#
- Environment Setup
II. Key sections#
- Dev Container basics:
- Dev Containers 101
- Define and run a development environment in a Dev Container
- Key features
- Demos for the selected tech stack(s)
- **AI and agents in Dev Containers:
- Using coding agents in a Dev Container,
- Model Context Protocol (MCP) integrations
- Using SLMs and Ollama in a Dev Container.
- Custom images:
- Using a custom image with the dependencies and tools needed for the selected stack.
- Multi-container systems with Docker Compose or Podman Compose
- Cloud development environments:
- Move the environment to the cloud using GitHub Codespaces as an example.
- Dev Containers in CI:
- Explore how to reuse the development environment configuration in CI/CD pipelines with GitHub Actions as an example
III. Optional parts#
Depending on the audience and available time, we can also explore:
- Integration testing with Testcontainers in a Dev Container
- Using Nix in Dev Containers
- Custom cloud development environments (CDEs): building your own IDEs at scale