<a id="managing-container-services"></a>

# Containers

Zadara Container Service (ZCS) makes it possible to run arbitrary
processing tasks from directly inside the storage. This is possible due
to Zadara’s convergence of Docker Container technology into the Zadara
Engines. The benefit of data processing inside the storage, rather on a
connected Server, is the direct, low latency access to the data Volumes.

## Adding ZCS Engines

In order to run ZCS Containers within a VPSA a ZCS engine is needed in
addition to the IO engine. The ZCS engine contains the compute resources of
the VPSA’s Virtual Controllers that are allocated for the Docker Container.

The ZCS can be added when the VPSA is originally created, as described
in [Creating a VPSA](first-steps.md#creating-vpsa), or it can be added at a later time.

To add a ZCS engine go to the Zadara Provisioning Portal, select the
relevant VPSA, click Change Engines and select the engine size
that fits the needs of the application that will run in the Container.

![image114](media/image114.png)

## Creating a Container

A Docker Container provides a layer of abstraction and automation
of operating-system-level virtualization on Linux. It uses the resource
isolation features of the Linux kernel to allow independent “containers”
to run within a single Linux instance, avoiding the overhead of starting
and maintaining virtual machines. Zadara’s VPSA
is utilizing this technology to allow user applications to run within
VPSA in an effective and controlled manner. For more details on Docker
Containers please refer to the Docker documentation at [https://docs.docker.com](https://docs.docker.com)

A Container can access any Volume from its hosting VPSA, excluding NAS
Volumes defined as “SMB Only” (see [Creating and Deleting a Volume](volumes.md#creating-and-deleting-a-volume)).
A Container can be attached to a single Block Volume or to multiple NAS Shares.

When creating a Container you will need to specify its operating
environment such as Memory Pool assignment, Volumes it can access and
communication ports.

To create a Container open the VPSA GUI > Containers and click
Create .

![image120](media/image120.png)

In the dialog that opens up do the following:

![image121](media/image121.png)

- Give the Container a name.
- Select the Image for this Container.

- Assign Volumes that this Container can access.
- Select the Port Ranges this Container will use.

- Set environment variables
- Set arguments to the entry point (see below)
- Set links to other Containers, so that this Container will only run
  while the others are running too.
- Select a Memory Pool or leave it empty to use the default Memory
  Pool.
- Entry point is the program or the deamon to execute in the Container.
- Select whether the Container will start immediately following its
  creation.
- Allow the Container to use the public IP of the VPSA (if any).

**Creating a Container from an existing one**

You can avoid repeatedly entering the same Container parameters over and
over again for each Container created. When creating a Container similar
to an existing one you can use the Load from Existing option and just
modify parameters as required.

![image122](media/image122.png)

## Monitoring Containers

The Containers details are shown in the following South Panel tabs:

![image123](media/image123.png)

**Properties**

Each Container includes the following properties:

| **Property**     | **Description**                                      |
|------------------|------------------------------------------------------|
| ID               | An internally assigned unique ID                     |
| Name             | Name that was given at creation time                 |
| Comment          | User free text. Can be used as label, reminder, ect… |
| Image ID         | An internally unique ID of the Container Image       |
| Image Name       | Name of the Container Image                          |
| Memory Pool ID   | An internally unique ID of the assigned Memory Pool  |
| Memory Pool Name | The name of the assigned Memory Pool                 |
| Status           | Normal / Failed / Creating / Deleting                |
| Started          | Yes /No                                              |
| IP               | IP address assigned to the container                 |
| Use Public IP    | Yes / No                                             |
| Entry Point      | The entry point program/daemon                       |

**Volumes**

The Volumes tab lists the Volumes that the selected Container can
access.

**Port Ranges**

The Port Ranges tab lists all of the Ports that are assigned to the
selected Container.

**Environment Variables**

This tab lists all of the Environment Variables to be used in the
Container.

**Args**

The Args tab lists all of the Arguments for the entry point execution.

**Links**

The Links tab lists all of the Links from the selected Container to
other Containers. These other Containers must run for the selected
Container to run.

**Logs**

The Logs tab lists all of the event log messages related to that Backup
Job.

**Metering**

The Metering Charts provide live metering of the Container’s memory
consumption (Only appears when the Container is running).
