Introduction

ADE creates a Docker container from a base image and mounts additional read-only volumes in /opt. The base image provides development tools (e.g. vim, udpreplay, etc.), and the volumes provide additional development tools (e.g., IDEs, large third-party libraries) or released software versions (e.g. the latest AutowareAuto release). Furthermore, ADE enables easy switching between versions of the images and volumes.

An example of ADE

_images/ADE.png

The image above shows an example of an ADE configuration. The base-image, ade, is used to create a container where volumes for AutowareAuto (a software library), Atom (an IDE), and CUDA (a large third-party library) are mounted as volumes.

When ADE is started, it prints out a corresponding matrix: e.g.

ade               | v0.1.0   | v0-1-0  | registry.gitlab.com/autowareauto/autowareauto/ade:v0-1-0
autowareauto      | v0.1.0   | v0-1-0  | registry.gitlab.com/autowareauto/autowareauto:v0-1-0
atom              | v1.35.0  | latest  | registry.gitlab.com/apexai/ade-atom:latest
cuda              | v8.0     | v8-0    | registry.private-gitlab/cuda/cuda:latest

The first row of the table is the base image, all other entries are volumes and have a corresponding entry in /opt. Each row displays the image name, version information (git hash or tag), the Docker tag, and the FQN for each image. If no version information was provided during the creation of the Docker image, the second column will be empty.

Terminology

Docker

Docker allows the creation of containers with isolated resources from the host OS: “Docker is a computer program that performs operating-system-level virtualization also known as containerization.” — Wikipedia Docker (software).

Image

Images are snapshots of the filesystem for a container. They are based on a Dockerfile, and are created using docker build. Images can be uploaded to a registry, where they can be downloaded by others.

Container

A container is a running instance of an image. When a container is deleted, any changes to its filesystem are usually discarded. A container can publish parts of its filesystem as volumes, which can then be mounted by other containers.

Registry

A registry is a server-side application that stores pre-built Docker images.

Fully-qualified name (FQN)

The FQN is the term for the full URL-like path that describes an image. e.g. registry.gitlab.com/apexai/ade-atom:latest

Tag

A tag is a specific version of an image. e.g. latest in the FQN above

Host

The host is the native operating system on which Docker is running.