# [Prepare Docker image for Arm embedded development](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/docker/)

## In this learning path

- [Introduction](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/docker/)
- [Create Dockerfile and build docker image](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/docker/dockerfile/)
- [Next Steps](https://learn.arm.com/learning-paths/embedded-and-microcontrollers/docker/_next-steps/)

## About this Learning Path

| Skill level:        | Introductory          |
|---------------------|-----------------------|
| Reading time:       | 30 min                |
| Last updated:       | 13 Aug 2026           |

| Author:             | Ronan Synnott, Arm [LinkedIn](https://linkedin.com/in/ronansynnott) |
|---------------------|-----------------------------------------------------------------------|
| Arm IP:             | [Cortex-A](https://support.arm.com/?tab=compute-ip&Product%20Type=Application%20Processors) [Cortex-R](https://support.arm.com/?tab=compute-ip&Product%20Type=Real-Time%20Processors) [Cortex-M](https://support.arm.com/?tab=compute-ip&Product%20Type=Microcontrollers) [Neoverse](https://support.arm.com/?tab=compute-ip&Product%20Type=Infrastructure%20Processors) |
| Tags:               | [Containers and Virtualization](/tag/containers-and-virtualization) [Baremetal](/tag/baremetal) [Docker](/tag/docker) [Arm Development Studio](/tag/arm-development-studio) [Arm Compiler for Embedded](/tag/arm-compiler-for-embedded) [Arm Fast Models](/tag/arm-fast-models) |

### Who is this for?
This is an introductory topic for embedded software developers new to Docker.

### What will you learn?
Upon completion of this Learning Path, you will be able to:

- Create and understand a Dockerfile
- Build Docker image
- Test the image

### Prerequisites
Before starting, you will need the following:

You’ll create a containerized Arm embedded development environment with Docker. First, you’ll prepare an Ubuntu-based Dockerfile containing Arm Compiler for Embedded and Fixed Virtual Platforms (FVPs). Then, you’ll build the image and verify that the tools launch. You’ll finish with a reusable environment for compiling Arm applications and running targets on FVPs without installing tools directly on the host.

### Frequently asked questions

<details>
<summary>Which base operating system should the Dockerfile use?</summary>
Use Ubuntu as the base for the Docker image. The host can be Windows or a different Linux distribution.
</details>

<details>
<summary>Do I need to use sudo for Docker commands on Linux?</summary>
Many Linux setups require `sudo` because the Docker daemon runs as root. If you see a permission error, prepend `sudo` to the Docker command.
</details>

<details>
<summary>What files do I need to copy into the image before building?</summary>
Copy the installation packages you downloaded for Arm Compiler for Embedded and the FVPs. Make sure the Dockerfile `COPY` paths match where those files are located.
</details>

<details>
<summary>How do I know the image is ready to use?</summary>
Start a container from the image and run the compiler and FVP executables. Confirm each executable launches and reports version information. If both start without errors, your environment is set up correctly.
</details>

<details>
<summary>Can I follow these steps on a Windows host?</summary>
Yes. The container runs Ubuntu, and the host can be Windows or Linux. Install the appropriate Docker edition for your platform before starting.
</details>
