---
title: Set Up Docker Container Configurations for an Application Release
slug: bhdm/set-up-docker-container-configurations-for-an-application-release
createdAt: 2022-11-24T21:15:33.000Z
---

An application release must contain at least one component (*Containers*/*Containers Advanced*) or a compose configuration file (*Compose*). Although it is possible to submit a Docker application release without at least one component (*Containers*/*Containers Advanced*) or a compose configuration file (*Compose*), the Docker application release cannot be later deployed to a Belden Horizon Data Operations instance.&#x20;

The component or the compose configuration file sets up a configuration to extract at least one Docker image from a Docker repository to execute the Docker image's respective Docker container. This allows the Docker application release to package multiple Docker images (and the respective Docker containers) and deliver them to Belden Horizon Data Operations instances concurrently. It is these Docker images from the component/compose configuration file that will be later deployed as Docker images to Belden Horizon Data Operations instances during [Deploy an Application to Edge Devices](docId\:la0kLcTigWIfvf43FDV1u).



# Option 1 Containers: Set Up a Component

See the following on how to add/manage components for the *Containers* tab.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/Et_Wx22Q1mHT5oP6bFMX3_image.png" size="80" width="1920" height="866" caption="Belden Horizon Data Manager User UI : Marketplace Catalog : Catalog Applications : Containers : Components " position="center" showCaption="true"}

\[1] **Show filter&#x20;**/ **Hide filter:** Search by *Name*, *Image*.

\[2] **Add Component:&#x20;**&#x59;ou can add multiple components. You can't add variables for a submitted application release.&#x20;

\[3] **Action menu:**

- **Edit:&#x20;**&#x59;ou can't edit components for a submitted application release.&#x20;
- **Remove:&#x20;**&#x59;ou can't delete components for a submitted application release.&#x20;

## More on Add Component

When adding a new component, a Docker image must be extracted from a Docker registry. The other available customizations enable additional configurations when executing the Docker container from the extracted Docker image.

Furthermore, when customizing the Docker image configurations, it is also possible to use the variables created from [Set Up Variables for an Application Release](docId:0V6AlKYRqqUjD3r_2wfUt) as values.  The syntax for referring to these variables is `${VARIABLE_NAME}` where `VARIABLE_NAME` is the name of the variable being used.

### Step 1: Set Up Common Parameters

In this section, you will set up the initial configuration needed for a Docker image’s respective Docker container.



::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/GP4b-z15sO0gg8Z9gWm7e_image.png" size="80" width="1211" height="431" caption="Add Component : Common Parameters" position="center" showCaption="true"}

- **Name**: Assign a name for Docker container. See [Assign name](https://docs.Docker.com/engine/reference/commandline/run/#assign-name-and-allocate-pseudo-tty---name--it) for details.
- **Repository**: The available registry provider of the Docker image. See [Registry Management](https://app.archbee.com/docs/VAKj8ZK5Bi9ApnYcgeYQr/M6yzedYRAwwYDnLDtOQlZ) and [Docker Registry](https://docs.Docker.com/registry/) for details.
- **Image:&#x20;**&#x54;he Docker image registry location for a Docker pull command. See [Pull From a Different Registry](https://docs.docker.com/engine/reference/commandline/pull/#pull-from-a-different-registry) for details. The image registry location must be both a valid registry location and accessible by Belden Horizon Data Operations instances.
- **Restart**: The restart policy for the equivalent Docker container. See [Use a Restart Policy](https://docs.docker.com/config/containers/start-containers-automatically/#use-a-restart-policy) for details.
- **Network Mode**: The network settings for the equivalent Docker container. See [Network Settings](https://docs.docker.com/engine/reference/run/#network-settings) for details.
- **Enable TTY**: See `--tty` or `-t` of [Options](https://docs.docker.com/engine/reference/commandline/run/#options) and [Allocate Pseudo-TTY](https://docs.docker.com/engine/reference/commandline/run/#name) for details.
- **Open STDIN**: See the `--interactive` or `-i` option of [Options](https://docs.docker.com/engine/reference/commandline/run/#options) and [Allocate Pseudo-TTY](https://docs.docker.com/engine/reference/commandline/run/#name) for details.
- **Privileged**: See [Full Container Capabilities](https://docs.docker.com/engine/reference/commandline/run/#privileged) for details.
- **Command**: The command-line arguments used by the Docker container’s application when it executes.

### Step 2: Set Up Environment

In this section, you can set up the environment variables that the Docker container will use during its operation. See [Environment Variables](https://docs.docker.com/engine/reference/run/#env-environment-variables) for details.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/XOuzQ0WQe-92oc2aX5n7J_image.png" size="80" width="1211" height="311" caption="Add Component : Environment" position="center" showCaption="true"}

### Step 3: Set Up Labels

In this section you can set up metadata to the Docker container. See [Set Metadata on Container](https://docs.Docker.com/engine/reference/commandline/run/#set-metadata-on-container--l---label---label-file) for details.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/8GGZMJzsq2a3uzyTxoBqG_image.png" size="80" width="1219" height="312" caption="Add Component : Labels" position="center" showCaption="true"}

### Step 4: Set Up Ports

In this section, you can set up the port management for the Docker container. See [Ports](https://docs.docker.com/network/#published-ports) for details.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/l3CBA5F0GF2F206ZZG4g2_image.png" size="80" width="1214" height="310" caption="Add Component : Ports" position="center" showCaption="true"}

### Step 5: Set Up Volumes

In this section, you can set up the data persistence mechanism for the Docker container. See [Use volumes](https://docs.docker.com/storage/volumes/) or [Use bind mounts](https://docs.docker.com/storage/bind-mounts/) for details.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/xmWKzTW10dhFC-k6g5cFo_image.png" size="80" width="1217" height="311" caption="Add Component : Volumes" position="center" showCaption="true"}

# Option 2 Containers Advanced: Set Up a Component

This option is an upgraded version of *Option 1 Containers: Set Up a Component.&#x20;*&#x53;ee the following on how to add/manage components for the *Containers Advanced* tab.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/X9FpjmRkQApqPsf9DbfJv_image.png" size="80" width="1920" height="866" caption="Belden Horizon Data Manager User UI : Marketplace Catalog : Catalog Applications : Containers Advanced : Components " position="center" showCaption="true"}

\[1] **Show filter&#x20;**/ **Hide filter:** Search by *Name*, *Image*

\[2] **Add Component:&#x20;**&#x59;ou can add multiple components. You can not add variables for a submitted application release.&#x20;

\[3] **Action menu:**

- **Edit:&#x20;**&#x59;ou can't edit components on a submitted application release.&#x20;
- **Remove:&#x20;**&#x59;ou can't remove components on a submitted application release.

## More on Add Component

In *Option 1 Containers: Set Up a Component*, there are five steps where you may enter details for a pre-determined set of basic Docker parameters. The limitation of the previous option is that it is not possible to access and configure the remaining more advanced Docker parameters.&#x20;

When adding a new component, this second option offers a `.json` configuration form to access and configure the remaining advanced Docker parameters. The form will be used to request a Docker image from a selected Docker registry.&#x20;

### Step 1: Set Up Common Parameters

The first step is a simplified version of the *Step 1: Set Up Common Parameters* section from the previous option.



::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/_SLCJ-f7AmEJcEWXZ7Bjh_image.png" size="80" width="1208" height="307" caption="Add Component : Common Parameters" position="center" showCaption="true"}

- **Name**: Assign a name for Docker container. [Assign name](https://docs.Docker.com/engine/reference/commandline/run/#assign-name-and-allocate-pseudo-tty---name--it) for details.
- **Repository**: The available registry provider of the Docker image. See [Registry Management](docId\:l8C-9KGKTFFAZtJtB92E1) and [Docker Registry](https://docs.docker.com/registry/) for details.

### Step 2: Insert Container Create Configuration `.json` File

The second step allows you to create a Docker container by entering file contents for a Docker container configuration `.json` file. See [Create a container](#) for details.

Furthermore, when customizing the `.json` file, it is also possible to use the variables created from [Set Up Variables for an Application Release](docId:0V6AlKYRqqUjD3r_2wfUt) as values. The syntax for referring to these variables is `${VARIABLE_NAME}` where `VARIABLE_NAME` is the name of the variable being used.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/HMrZAJxSS8UVFDpalpu23_image.png" size="80" width="1213" height="649" caption="Add Component : Config" position="center" showCaption="true"}

\[1] **Import Component Config**

\[2]**&#x20;Copy Config Content**

\[3] **Paste Config Content**

\[4] **Clear Config Content**

\[5] **Link to API specifications for [Creating a container](https://docs.docker.com/engine/api/v1.40/#tag/Container/operation/ContainerCreate)**

\[6] **Enter Config Content**

# Option 3 Compose: Set up a Compose

This option is an even more upgraded version of the previous two options in the form of an alternative Compose subsection. Rather than creating a component one by one like the previous two options, you are able to set up multiple components all at once by entering a YAML Compose file to set up a multi-container application configuration. See [Compose specifications](https://docs.docker.com/compose/compose-file/) for details.

Furthermore, when customizing the YAML file, it is also possible to use the variables created from [Set Up Variables for an Application Release](docId:0V6AlKYRqqUjD3r_2wfUt) as values.  The syntax for referring to these variables is `${VARIABLE_NAME}` where `VARIABLE_NAME` is the name of the variable being used.

![](https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/PZEFdlpmTJXb7OPEZoXka_image.png "Belden Horizon Data Manager User UI : Marketplace Catalog : Catalog Applications : Compose : Compose")

\[1] **Import Compose File**

\[2] **Copy Compose File**

\[3] **Paste Compose File**

\[4] **Clear Compose File**

\[5] **Link to Compose File format in&#x20;**[Compose specifications](https://docs.docker.com/compose/compose-file/)

\[6] **Compose File Contents**

\[7] **View Supported Compose Objects**

## Supported Compose Objects

When you click **Supported Compose Objects,&#x20;**&#x61; list of all the supported objects displays from the right.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/RaSlybpgwfRyciGMxZpsV_image.png" size="60" width="330" height="600" position="center" caption=" Supported Compose Objects" showCaption="true"}

When you attempt to **Save** a YAML Compose file with unsupported compose objects, an error such as the following appears. It will indicate all the invalid fields.

::Image[]{src="https://api.archbee.com/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/GLHvmQW_jvoMxXMHvgEnC_image.png" size="80" width="791" height="299" caption="Invalid Data : unsupported Compose Objects" position="center" showCaption="true"}

