This is the step-by-step process I took to create the Docker image.
Create a directory just to save the file:
$ mkdir ~/Docker
$ cd ~/Docker
Install Docker case you don’t have it yet and give permission to your user:
$ sudo apt install docker.io
$ sudo usermod -aG docker ${USER}
Log out and log in again to get into this docker group, or alternatively:
$ su ${USER}
Create the Dockerfile with the instructions to install the needed files:
$ vi Dockerfile
# Ubuntu as parent file
FROM ubuntu
# Update the image to the latest packages
RUN apt-get update && apt-get upgrade -y
# Install needed tools
RUN apt-get install automake bison build-essential flex gcc-arm-none-eabi gperf git libncurses5-dev libtool libusb-dev libusb-1.0.0-dev pkg-config kconfig-frontends genromfs zlib1g-dev -y
# Create how nuttxspace
WORKDIR /nuttxspace
#clone needed files:
RUN git clone https://github.com/apache/nuttx /nuttxspace/nuttx
RUN git clone https://github.com/apache/nuttx-apps /nuttxspace/apps
Built it:
$ docker build .
Verify if it was created correctly:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> f0a673f5538d About a minute ago 3.9GB
ubuntu latest 6b7dfa7e8fdb 6 weeks ago 77.8MB
Tag the image:
$ docker tag f0a673f5538d acassis/ubuntu-nuttx
Run the image:
$ docker run -it acassis/ubuntu-nuttx /bin/bash
If everything worked fine, you could wish to submit it to Docker hub
So, re-tag the image with a version number to submit:
$ docker tag acassis/ubuntu-nuttx acassis/ubuntu-nuttx:v1
Login in the docker:
$ docker login
Send the docker image:
$ docker push acassis/ubuntu-nuttx:v1
Everything done!
If for some reason you want to remove your local image:
$ docker rmi -f f0a673f5538d
So, is this to create a Docker image that is a bootable Nuttx OS image that can then be installed on appropriate hardware?
This is the build environment, this way people just need to configure their board and compile to be installed in the appropriate hardware. Actually I was thinking something like you asked: create a docker bootable image of NuttX for computer (since their is no docker for embedded system yet)