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 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.
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 Edit on the Image Repository section. Select the Pool that will host the Image Repository.tab and click
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 Create.and click
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 .
Search for and select the Image and click Create .
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.
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 Create .and click
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 .
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 Create .and click
In the dialog that opens up do the following:
Give the Container a name.
Select the Image for this Container.
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.
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.
The Containers details are shown in the following South Panel tabs:
Each Container includes the following properties:
An internally assigned unique ID
Name that was given at creation time
User free text. Can be used as label, reminder, ect…
An internally unique ID of the Container Image
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
Normal / Failed / Creating / Deleting
IP address assigned to the container
Use Public IP
Yes / No
The entry point program/daemon
The Volumes tab lists the Volumes that the selected Container can access.
The Port Ranges tab lists all of the Ports that are assigned to the selected Container.
This tab lists all of the Environment Variables to be used in the Container.
The Args tab lists all of the Arguments for the entry point execution.
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.
The Logs tab lists all of the event log messages related to that Backup Job.
The Metering Charts provide live metering of the Container’s memory consumption (Only appears when the Container is running).
It is not possible to update/edit the configuration of an existing Container. The Container must be deleted and recreated with the required settings.