• Cloud Container Engine

cce
  1. Help Center
  2. Cloud Container Engine
  3. User Guide
  4. Overview
  5. Basic Concepts

Basic Concepts

Cloud Container Engine (CCE) is a platform for developers and partners to develop, deploy, and manage containerized applications. With CCE, you can roll out new containerized applications cost-efficiently anytime, anywhere.

The Docker technology is at the core of CCE. Docker is an open platform for developing, shipping, and running applications. It is designed to deliver your applications faster. With Docker, you can separate your applications from your infrastructure and treat your infrastructure like a managed application. Docker helps you ship code faster, test faster, deploy faster, and shorten the cycle between writing code and running code.

If you intend to work with CCE, it is important that you have a basic understanding of Docker and can use the Docker command line. For more information about Docker, visit https://docs.docker.com/.

You should also have an understanding of the following concepts.

Container Image

A container image is a read-only template used to create containers. For example, a container image could contain a complete Ubuntu operating system with required programs and their dependency files installed.

Docker provides a simple way to build new container images or update existing container images. In addition to building container images on your own, you can download container images that others have created.

In CCE, container images are classified into two types:

  • Internal container images

    Internal container images are stored in the container registry provided by CCE. Internal container images uploaded by a user are private to all users who are created by the same tenant as the image uploader.

  • External container images

    External container images are stored in container registries provided by a third party, for example, the Docker Hub from Docker Inc. CCE users can download container images from public third-party container registries.

Container Cluster

A container cluster consists of at least one master and node.

  • A master coordinates the cluster it belongs to.
  • A node is a worker that runs containerized applications.

Container clusters are classified into two types: Single and HA.

Cluster Type

Number of Masters

Number of Nodes

Single

1

At least one

HA

3

At least one

Figure 1 Relationship between container cluster, master, and node

Your container cluster is private and inaccessible to other users. This ensures that your containerized applications are securely isolated from containerized applications of other users.

Note that a container cluster must be created before a containerized application is created.

Master

A master manages the cluster it belongs to. The master coordinates all activities in the cluster, such as scheduling applications, maintaining applications' desired state, scaling applications, and rolling out new updates.

Node

A node is an Elastic Cloud Server (ECS) on which a containerized application will run. Every node runs a node agent, which is used to manage container instances on the node.

Relationship Between Master and Node

When deploying an application in a cluster, CCE tells the cluster master to start the application containers. The master then schedules the containers to run on a node in the cluster. Nodes communicate with their master using the Kubernetes APIs exposed by the master. Users can also use Kubernetes APIs directly to interact with clusters.

Containerized Application, Component, Container

A containerized application is software provided to end users through CCE. For example, it can be a website application or a mobile app.

A component is a function module of a containerized application. Components are decoupled from each other.

A container is a runtime instance of a container image. Every instance of a component is shipped as a container.

A single containerized application consists of one or more components. Each component has one or more containers.

Figure 2 Relationship between containerized application, component, and container

Component Template

A component template defines a template name, container images, network protocols, ports, memory capacity, CPU cores, environment variables, and volumes. With a component template, you can quickly create a containerized application with the specifications documented in the template.

Service

A service defines a set of instances and a means for accessing them, such as a single stable IP address and corresponding domain name system (DNS) name.

To address component communication issues, service names are used instead of IP addresses. You must specify a service name when creating a containerized application.

Namespace

A namespace is like a prefix to the name of a resource. Namespaces help different applications and projects to share a container cluster, such as by preventing name collisions between unrelated projects.

App Designer

The App Designer is a graphical orchestration tool. With the App Designer, you can drag-and-drop to design containerized applications and their topology and save graphical designs as application templates. With the template, you can quickly create multi-container applications. This makes application deployment easier and more efficient.

Environment Variable

An environment variable refers to a container runtime variable. A maximum of 30 environment variables can be defined in a component template. The variables of a containerized application can be modified even after the application is deployed. This gives greater flexibility in application management.

There are two ways to define an environment variable:

  • Specify the Environment Variables parameter on the CCE console
  • Specify the ENV parameter in the Dockerfile

Volume

A volume is a specially-designated directory within one or more containers that bypasses the Union File System. Using a volume means mounting an absolute path on a host (also called a node) to a path on a container, thereby achieving sharing between hosts and containers.

The current CCE version supports only EVS plug-ins.

There are two ways to define a volume:

  • Specify the Volumes parameter on either the Create Component Template page or the Create App Design page of the CCE console
  • Run the docker run command with the -v option

    For example, to mount the /src/webapp directory on a host to the /opt/webapp directory on the frontend container, run the following command:

    docker run -d -P --name frontend -v /src/webapp:/opt/webapp frontend

mcore

One CPU core is equal to 1000 mcores. CPU usage of containerized applications is typically measured in mcores.