Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Workshop - Container Developer Environments. Vi...

Avatar for Oleg Nenashev Oleg Nenashev PRO
October 14, 2026
3

Workshop - Container Developer Environments. Virtualizing your IDEs for embedded projects

Embedded development and QA are entering a new era, enabled by Cloud Development Environments (CDEs) such as GitHub Codespaces or Devcontainers, which allow fully configured workspaces to run on laptops, Kubernetes clusters, or public clouds. Containers and VMs, often managed with tools like KubeVirt and QEMU and wrapped by frameworks like Testcontainers, enable scalable, hardware-aware test setups for HIL testing, firmware validation, and system modeling. It might sound like a miracle, but modern tech stacks make it possible!

During this workshop, we'll build a containerized developer environment for a robotics project using the open-source ROS2 stack (C++/Python, CMake, custom build tools, Gazebo, etc.), or another example nominated by the audience. Step by step, you will learn to define and customize Dev Containers for their technology stacks, adapt IDEs for embedded workflows, and package the full environment for sharing across teams and reuse in CI/CD pipelines.

We will also explore how to move these environments beyond the laptop and run them on cloud-based development platforms such as GitHub Codespaces and similar providers. The workshop will also show how tools such as Testcontainers and API-mocking frameworks can support integration testing, even in embedded projects where external services, simulated devices, and distributed components increasingly play an important role. Last but not least, we'll explore leveraging the local AI capabilities of large and Small Language Models in our developer environments and tests, using Dev Containers features and Testcontainers extensions.

By the end of the session, participants will understand how to virtualize their IDEs, standardize developer onboarding, and create reusable development environments that connect local workstations, cloud platforms, and automated pipelines.

Avatar for Oleg Nenashev

Oleg Nenashev PRO

October 14, 2026

More Decks by Oleg Nenashev

Transcript

  1. QA&Test 2026 Bilbao TUTORIAL Container Developer Environments Virtualizing your IDEs

    for embedded projects Dr. Oleg Nenashev Independent Consultant
  2. 2

  3. Disclaimer • I am at this conference as independent consultant,

    #OpenToWork • I do not represent any of my current client(s) or employers • Opinions are my own speakerdeck.com/onenashev
  4. > whoami Dr. Nenashev / Mr. Jenkins Community Builder, Dev

    Tools DevRel & DevOps Consultant @oleg_nenashev oleg-nenashev https://oleg.swiss/ #RussiansAgainstPutin #StandWithUkraine
  5. What you will learn? • Dev Containers basics • Dev

    Containers and AI integrations • Using Dev Containers for Python and C/C++ projects • Using Dev Containers for ROS/Gazebo • Using Dev Containers in CI and Cloud Developer Environments 8
  6. Today’s tools • Visual Studio Code • Dev Containers •

    Docker Desktop or Podman • GitHub Copilot • GitHub Codespaces 9
  7. Workshop chapters 1. 2. 3. 4. 5. 6. 7. Introduction

    to Dev Containers Environment Setup Dev Containers intro, with Python stack Using AI and agents in Dev Containers C/C++ tooling in a Dev Container Custom Docker images in Devcontainers ROS2 and Gazebo in a Dev Container Optional - YOU CHOOSE 8. 9. 10. 11. Using Devcontainers in CI Integration Testing with Testcontainers Connecting hardware to a Dev Container Moving to a Cloud Developer Environment Part I. 9:15 - 10:30 Part II. 11:00 - 13:00 11
  8. 16

  9. What does engineer use daily? • • • • •

    • • CI Systems Issue Trackers Chats Zoom / Google Meet / … Email Calendar … 18
  10. Why containers? • Configuration Management as Code • Reusability •

    Fast provisioning • Clean environments • Disposability • Clustering
  11. My Previous Presentations • • • Developer Tools & Containers

    Jenkins, Docker, WireMock, Testcontainers See https://speakerdeck.com/onenashev/collections/embedded 22
  12. 2017 - Docker in Embedded Prototypes, Dev Tools Docker Swarm

    Cluster on Raspberry Pi Test Infrastructures, CI/CD
  13. Dev Containers 101 .devcontainer/ devcontainer.json Configuration JSON Docker image, container

    parameters, IDE plugins containers.dev/ implementors/spec/ 31
  14. Dev Containers • Official images for common tech stacks •

    Dev Container images provided by projects and vendors • DYI: Single container • DYI: Multi-container instances https://github.com/ devcontainers/images containers.dev/guide/dockerfile 32
  15. Dev Containers for your dev environments Your developer tools and

    environments, packaged as containers. With proper developer experience Supported in: • • • • • Visual Studio Code (link) Visual Studio (link) IntelliJ Platform IDEs (link) Cloud IDEs and Services CI/CD Systems https://containers.dev/ 33
  16. Et Windows? • Multiple Docker engines run on Windows •

    Normally, Windows Subsystem for Linux is used (WSL2) under the hood • Native Windows containers are possible, too ◦ Not in this workshop 34
  17. Reuse Dev Containers can be shared as a part of

    your project Dev Containers can be reused in CI/CD pipelines https://github.com/testcontainers/testcontainers-native/blob/main/.github/workflows/ci.yml 44
  18. Dev Containers supports AI 1. IDE Integrations and plugins for

    Generative AI and Agentic development a. b. c. All plugins work Built-in sandboxing for agents through the container GitHub access tokens and integrations are propagated 2. MCPs can run locally, can connect to external services and to the ones on the dev machine 3. LLM/SLM providers can be connected, including local ones 46
  19. C/C++ - Quick Start 1. Clone https://github.com/microsoft/vscode-remote-try-cpp 2. Open the

    project in VSCode 3. Install the Dev Containers extension 4. Reopen the project in a container 53
  20. 4 Environment runs in a container 2. The workspace is

    mapped 3. Tools are accessible 4. IDE plugins, including Git, Intellisense & Co 5. AI Agent works, too 5 1. 3 1 Sample: https://github.com/microsoft/vscode-remote-try-cpp 57
  21. Dev Containers • Official images for common tech stacks •

    Dev Container images provided by projects and vendors • DYI: Single container • DYI: Multi-container instances https://github.com/ devcontainers/images containers.dev/guide/dockerfile 59
  22. DIY Dev Containers 1. Single container From image registry or

    Dockerfile containers.dev/guide/dockerfile 61
  23. Let’s take a real embedded example! • Open Robotics stack

    • ROS 2 - Robot Operating System ◦ https://github.com/ros2 • Gazebo - simulator ◦ https://gazebosim.org/ • Python and C/C++ runtime and development stack FOSDEM 2025 - OPEN ROBOTICS ROOM 64
  24. What will we do? • Show & Tell for the

    Dev Container • The demo is based on the official Gazebo + ROS 2 template ◦ ◦ gazebosim/ros_gz_project_template gazebosim.org/docs/latest/ros_gz_project_template_guide 65
  25. We were doing CDEs before they were a mainstream Image

    source: https://www.combell.com/en/blog/w hat-is-rdp-remote-desktop-protocol/ 69
  26. Cloud Developer Environments • Most of the functionality runs in

    the cloud • Local Tools / IDEs are just wrappers • SaaS, public cloud or self-hosted • Resources and licenses can be shared 70
  27. Existing CDEs • • • • • • • •

    • GitHub Codespaces Eclipse Che / Theia Ona (fka Gitpod) AWS Cloud9 Strong Network (Citrix) Coder Cloudomation … Web based AI IDEs Source: https://discord.com/blog/how-discord-moved-engin 72 eering-to-cloud-development-environments
  28. Choose the next step (if we have time) • Using

    Devcontainers in CI • Integration Testing with Testcontainers • Connecting hardware to a Dev Container • Moving to a Cloud Developer Environment • Using Nix in Devcontainers All examples are in https://github.com/oleg-nenashev/cde-for-embed ded-workshop 76
  29. Dev Containers offers container nesting tools • Docker-in-Docker feature ◦

    Create child containers inside a container, independent from the host's docker instance. ◦ Docker (Docker-in-Docker) ◦ Compatible with Testcontainers • Docker outside of Docker ◦ ◦ Re-use the host Docker socket, adding the Docker CLI to a container. Docker (docker-outside-of-docker) 79
  30. Demos • Quickstart: ◦ https://github.com/microsoft/vscode-remote-try-cpp • My Example - Testcontainers

    for C/C++ ◦ ◦ ◦ github.com/testcontainers/testcontainers-c Testcontainers can run in Dev Containers You can use GitHub Codespaces too 80
  31. Testing with hardware Attached peripherals VM, container or bare-metal Your

    Developer Machine Deploy bit-files, Blasting cables Debugging cables, firmware upload Runtime Tools Drivers Peripherals We don’t change them, huh? Power Reset when it hangs
  32. Docker & FPGA - HOWTO • • • • USB/Ethernet

    Ports can be exposed to a container Docker image can include tools and drivers https://github.com/halfmanhalftaco/fpga-docker https://www.starwaredesign.com/index.php/blog/ 64-fpga-meets-devops-xilinx-vivado-and-jenkins-with-docker 84
  33. Hardware tests with containers? Expectations • It works Reality •

    It works on a success path • You can run containers in privileged mode • BUT: software errors, timeouts, access conflicts, device hanging when switching containers • You can use drivers from host OS • BUT: you still need special test equipment and drivers There are limitations, but doable
  34. Containers for Simulations • We avoid using Hardware when possible

    • Low overhead and startup time • Resource quota management ◦ CPU/RAM ◦ Prioritization for users ◦ Licenses • Multi-instance tests (Docker Compose, Kubernetes Pods, etc.) 86
  35. Example - Xilinx Tools FPGA grids can be served and

    used in Kubernetes CDEs can be provisioned accordingly https://github.com/Xilinx/FP GA_as_a_Service 87
  36. QEMU • Multi-platform execution on a single machine • Container

    adapters are available https://github.com/qemus 88
  37. Dev Container for Simulations • Most Simulators already have Docker

    images • Docker images can be quickly converted to Dev Containers 89
  38. Existing CDEs, but for Embedded Projects • IDE Extensions •

    Dev Container(s) for… ◦ Build Tools ◦ Simulators ◦ Verification tools • Testcontainers 92
  39. Embedded Projects Better Dev X or security/compliance may require a

    custom CDE CDE suitable for your projects DYI 93
  40. DIY CDE Cluster Your Cloud FPGA as a service Source:

    https://medium.com/@elliotgraebert/laptop-development-is-dead 94 -why-remote-development-is-the-future-f92ce103fd13
  41. DYI CDEs • You can build a CDE on your

    own • IDEs with CDE plugins • Control planes • Workspaces & Cloud • Storage / Data (!) Security aspect is an area for commercial CDEs Source: https://coder.com/ 95
  42. DYI CDEs • Dev Containers and compatible IDEs • Container

    Engines (e.g. Docker) and Kubernetes for the environment • Device Plugins for FPGA (e.g. one for Xilinx) • KubeVirt for virtual machines 96
  43. Takeaways 1. Consider using Dev Containers 2. There are tools

    and frameworks for embedded projects, but a lot of DYI 3. For common software stacks, the existing IDEs are at your service 4. There are features for many common use-cases
  44. Abstract Back in 2017 at QA&Test Bilbao, I explored how

    Docker and Jenkins pipelines could transform CI/CD for embedded projects. Fast forward to 2023, containerization has become the norm in embedded software QA. My recent talk focused on tools like Testcontainers and WireMock, now widely used for testing not just backend services but entire embedded systems—from SCADA to IoT—within virtualized environments powered by Kubernetes. These technologies now form the backbone of modern testing infrastructure in software, and now expand to edge and embedded systems to cover full-system virtualization and integration testing. Same happens on the developer machines. Embedded QA Engineers are entering a new era of development enabled by Cloud Development Environments (CDEs) like GitHub Codespaces or Devcontainers, where fully configured workspaces can run on laptops, Kubernetes clusters or public clouds. Containers and VMs, often managed with tools like KubeVirt and QEMU, and wrapped by frameworks like Testcontainers, enable scalable, hardware-aware test setups that support HIL testing, firmware validation, and system modeling. It might sound like a miracle, but it’s actually possible with modern tech stacks! This talk demonstrates how to build such “hybrid developer environments” entirely with open source tools, combining C++/SystemVerilog development, embedded hardware access, and even AI-driven test automation – showing that the modern IDE for embedded QA is now distributed, intelligent, and platform-agnostic. Stay a while and listen, I have a PoC ready! 102