Managing Container Services

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 here Registering a Zadara Account & Creating a 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

Creating Image Repository

This one-time operation is needed in order to reserve some storage space for storing all of the Container images you plan to use.

To create an Image Repository, open the VPSA GUI > Settings > Container Service tab and click Edit on the Image Repository section. Select the Pool that will host the Image Repository.

image115

Creating Container Image

Before you can create a Container its Image must be entered into the Image Repository. You can take the image from any NAS share, or download it from Docker Hub. ( https://hub.docker.com )

To place an Image into the Image Repository open the VPSA GUI > Images and click Create.

image116

In the dialog that opens, give a name for the new Docker Image and select if you want to download the image from a Docker Hub or if you want to load it from a NAS share on this VPSA. Click Next .

image117

Search for and select the Image and click Create .

Note

It might take a while to download the image, depending on its size and the Internet connection’s speed. Wait for the image status to become “normal.” Your image is now ready for use.

image118

Creating a Container Memory Pool

A Container Memory Pool helps with managing and controlling the memory allocated to Containers. Containers run in the ZCS engine and compete with each other. To avoid a situation where some Containers consume all of the memory resources potentially leaving other Containers unable to run, you can create Container Memory Pools. Each Container can be assigned to a Memory Pool, limiting it only to consume memory from that Pool. Containers that are not assigned to any specific Container Memory Pool consume memory from the default Memory Pool, which holds all the engine memory not allocated to any specific Container Memory Pool.

To create a Container Memory Pool open the VPSA GUI > Container Memory Pools and click Create .

image119

Give the new Memory Pool a name and select the amount of memory to allocate to this Container Memory Pool. The combined total of all of the Pools’ limits must be less than or equal to the memory size of the ZCS engine. Click Create .

Creating 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

A Container can access any Volume from its hosting VPSA, excluding NAS Volumes defined as “SMB Only” (see 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

In the dialog that opens up do the following:

image121

  • Give the Container a name.

  • Select the Image for this Container.

Note

You must provide a full Container Image. Container files are not supported.

  • Assign Volumes that this Container can access.

  • Select the Port Ranges this Container will use.

Note

Available external ports range is defined in the system settings as described here Container Service.

  • 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

Monitoring Containers

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

image123

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).

Note

It is not possible to update/edit the configuration of an existing Container. The Container must be deleted and recreated with the required settings.