Docker is an open source software platform for setting up and running applications in packaged environments called containers. This virtualization at the operating system level enables you to run an application as a single, predictable package.

Docker Desktop for Windows is a native Windows application designed to run Docker containers on Windows systems.

See the Docker documentation for more detailed description and instructions on getting started with Docker on Windows.

You must set up your PC workstation to use Docker:

Requirements

  • A 64-bit Windows 10 machine with WSL 2 and Internet connection.

  • 8 GB of RAM.

  • 8 CPU cores.

  • 250 GB of free disk space. SSDs are highly recommended for faster build times.

1. Install and set up Docker Desktop

Make sure you have already installed the Windows Subsystem for Linux v2 (WSL 2) before running Docker Desktop.
  1. Download the Docker Desktop for Windows installer from the Docker Web site, and install it.

  2. After you finish installing Docker Desktop, reboot for the new configuration to take effect.

2. Docker image for Digi Embedded Yocto

Digi Embedded Yocto provides a fully configured and ready to use Docker image based on an Ubuntu 18.04 Linux distribution. Follow these steps in your Windows machine to download and run the Digi Embedded Yocto Docker image:

2.1. Download Docker image

  1. Run a Windows PowerShell

PS C:\> docker pull digidotcom/dey:dey-3.0-r4

2.2. Create a workspace

Digi Embedded Yocto needs a workspace folder (configured as case-sensitive) to operate a Linux operating system from within the Docker container.

If you use an HDD with an NTFS file system, performance may suffer. You must also configure the properties of this folder to be case sensitive.

To create a workspace folder in your host system:

  1. Run a Windows PowerShell with administrator privileges.

  2. Create a new folder in the root path of your hard drive.

    Windows PowerShell
    Copyright (C) Microsoft Corporation. All rights reserved.
    
    Loading personal and system profiles took 1125ms.
    PS C:\windows\system32> mkdir C:\workspace
  3. Enable the case-sensitive flag for your workspace folder.

    PS C:\windows\system32> fsutil.exe file setCaseSensitiveInfo C:\workspace
    Case sensitive attribute on directory C:\workspace is enabled.

    Docker uses this location to store platform projects as well as the following shared folders:

    • downloads/: This directory contains downloaded upstream source tarballs. Sharing this folder across builds by setting DL_DIR on your project conf/local.conf helps decrease build times.

    • sstate-cache/: This directory contains the shared state cache. Sharing this folder across builds by setting SSTATE_DIR on your project conf/local.conf helps decrease build times.

    A typical project stores several GB on these two directories, so it is good practice to share these folders across different projects. When you create the project using the automatic script that runs with the container, the project conf/local.conf gets configured to use these directories.

2.3. Create and start a new Docker container

Create and start a new Docker container based on the Docker image for Digi Embedded Yocto:

PS C:\> docker run -it --name dey-3.0-container
                       --volume <HOST_PATH_TO_WORKSPACE>:/home/dey/workspace
                       digidotcom/dey:dey-3.0-r4

Arguments in this command:

  • -it (short for -i -t) allocates a pseudo-TTY console to operate the container.

  • --name assigns the name dey-3.0-container to the new container.

Command prompts inside a Docker container follow the format <username>@<container_id>. username is the default user name inside the container, and container_id represents the unique container ID assigned by Docker during container creation.

Your Docker container with the name dey-3.0-container starts automatically and is ready to use.

+------------------------------------------------------------------------------------+
|                                                                                    |
|                                                                                    |
|                   Welcome to Digi Embedded Yocto Docker container                  |
|                                                                                    |
|  This Docker image is a ready to use system based on Digi Embedded Yocto (DEY) to  |
|  build custom images for the Digi platforms. DEY is an open source and freely      |
|  available Yocto Project (TM) based embedded Linux distribution.                   |
|                                                                                    |
|                                                                                    |
+------------------------------------------------------------------------------------+

Do you wish to create a new platform project [Y/N]?
Press Y to create a new project, or N to get to the prompt in the container.

Update Digi Embedded Yocto in the container

The container has Digi Embedded Yocto installed in /usr/local/dey-3.0. The installed version is the last release that was available when the Docker image was created, which may not be up to date. To update Digi Embedded Yocto:

dey@b53778495448: cd /usr/local/dey-3.0/
dey@b53778495448: repo init -b zeus
dey@b53778495448: repo sync -j 4

Useful Docker commands

Start a stopped container
PS C:\> docker start -ia 'dey-3.0-container'
List all Docker containers (running or stopped)
PS C:\> docker ps --all
See the Docker documentation for more commands and instructions.