Development Containers

Keith VanderLinden
Calvin University

Containers

Containers are development environments that bundle the:

  • Python virtual environment, interpreter, and tools
  • Data files and file structures
  • System tools and configuration
  • Operating system

They’re reproducible and isolated. Docker is a common container implementation, see: MwML’s container architecture diagram.

Docker

In Docker, Docker files are run to create Docker images, which are then run in Docker containers.

Containers vs. Virtual Machines

Both containers and virtual machines (VMs) are virtualization technologies, which separate applications from the underlying storage and compute infrastructure.

  • Containers share the host OS kernel, which makes them faster and more lightweight.
  • VMs have their own separate OS kernel, which makes them more secure.

See PhoenixNAP’s container vs VM diagram.

Development Containers

Development Containers (DevContainers) bundle Docker containers with development tools so that we can run our development environment on:

  • Our local machine in VSCode.
  • The cloud in a GitHub Codespace.

Development Infrastructure

See the live walkthrough.