KBEA-00170 Configuring CloudBees Accelerator 11.0 and Newer Versions to Run in Docker Containers

Article ID:360033184031
5 minute readKnowledge base

This KB article applies to CloudBees Accelerator ("Accelerator") version 11.0 and newer versions. For information about versions 10.0 and 10.1, see KBEA-00163 Configuring ElectricAccelerator 10.0 and 10.1 to Run in Docker Containers.

Accelerator includes an integration to support Docker on Linux platforms. This section describes how to configure a containerized Cluster Manager, eMake, or agents.

Supported Use Cases

In version 11.0 and newer versions, Accelerator supports running a single agent per container and multiple containers per host.

Installing Docker

To use Docker containers, you must download and install Docker. For instructions, see Docker Enterprise Edition or Docker Community Edition.

(Agent Installations Only) Installing EFS and LOFS

Accelerator normally uses its own kernel modules to provide two file systems (EFS and LOFS) required by agents. During a non-container agent installation, these kernel modules are compiled and loaded into the kernel to provide the necessary file system drivers. But if you plan to run agents in containers, you must install these modules separately.

CloudBees provides an EFS and LOFS installer. It compiles the efs100 and lofs kernel modules if needed, tests them, and loads them into the kernel to provide the drivers. These drivers must have the same build version as your agents.

To install the EFS and LOFS kernel modules:

  1. Log in as root.

  2. Make sure that gcc, make, and kernel headers are installed.

These are required for compiling the kernel modules. For details about installing kernel headers, see the "Supported Linux Platforms" section in the "Supported Platforms and System Requirements" chapter of the CloudBees Accelerator Installation and Configuration Guide at https://docs.cloudbees.com/docs/cloudbees-accelerator/latest/.

  1. Double-click the <`version>.<`build_number>`-Linux-x86_64-`Install installer file.

  1. Follow the prompts to complete the installation.

The installation packages might need a few minutes to extract.

  1. Enter /etc/init.d/ecfs status and make sure that the EFS and LOFS kernel modules are running.

Building Your Docker Image from a Tar File

To build a Docker image for the Cluster Manager, eMake, or agent from a tar file:

  1. Go to https://downloads.cloudbees.com/cloudbees-build-acceleration/ and choose a version

  2. Click to download the tar file for the Cluster Manager, eMake, or agent, and then click Download.

  3. Unzip and untar the file by entering:

    tar xvzf ElectricAccelerator-<version>.`<`build_number>-Container<component>.tar.gz

where <`component>` is ClusterManager, Emake, or Agent.

For example:

tar xvzf ElectricAccelerator-11.0.84351-ContainerAgent.tar.gz
  1. Build a Docker image by entering:

docker build -t <*repository name*> -f <path>/Dockerfile-xxx-xxx xxx

or:

docker build --tag=<*repository name*> --file=<path>/Dockerfile-xxx-xxx xxx

For example:

docker build -t cm_img -f cm/Dockerfile-cm-ubuntu cm

The following are specific instructions for downloading a tar file for a specific component and building a Docker image on Ubuntu 16.x.

Component

Steps to Download Tar File and Build Image

eMake

1. Download the ElectricAccelerator-<`version>.<`build_number>`-ContainerEmake.tar.gz` file from https://downloads.cloudbees.com/cloudbees-build-acceleration/. 2. Enter: tar xvzf ElectricAccelerator-<`version>.`<`build_number>-ContainerEmake.tar.gz` The files are extracted to a directory named emake. 3. Enter: docker build -t= -f=emake/Dockerfile-emake-ubuntu emake or: docker build -t= -f=/path/emake/Dockerfile-emake-ubuntu /path/emake

Cluster Manager

1. Download the ElectricAccelerator-<`version>-ContainerClusterManager.tar.gz` file from https://downloads.cloudbees.com/cloudbees-build-acceleration/. 2. Enter: tar xvzf ElectricAccelerator-<`version>.`<`build_number>-ContainerClusterManager.tar.gz` The files are extracted to a directory named cm. 3. Enter: docker build -t= -f=cm/Dockerfile-cm-ubuntu cm or: docker build -t= -f=/path/cm/Dockerfile-cm-ubuntu /path/cm

Agent

1. Download the ElectricAccelerator-<`version>.<`build_number>`-ContainerAgent.tar.gz` file from https://downloads.cloudbees.com/cloudbees-build-acceleration/. 2. Enter: tar xvzf ElectricAccelerator-<`version>.`<`build_number>-ContainerAgent.tar.gz file` The files are extracted to a directory named agent. 3. Enter: docker build -t= -f=agent/Dockerfile-agent-ubuntu agent or: docker build -t= -f=/path/agent/Dockerfile-agent-Ubuntu /path/agent

The following are specific examples for downloading a tar file and building a Docker image for a specific component on Red Hat Enterprise Linux 7.x.

Component

Steps to Download Tar File and Build Image

eMake

1. Download the ElectricAccelerator-<`version>.<`build_number>`-ContainerEmake.tar.gz` file from https://downloads.cloudbees.com/cloudbees-build-acceleration/. 2. Enter: tar xvzf ElectricAccelerator-<`version>.`<`build_number>-ContainerEmake.tar.gz` The files are extracted to a directory named emake. 3. Enter: docker build -t= -f=emake/Dockerfile-emake-rh emake or: docker build -t= -f=/path/emake/Dockerfile-emake-rh /path/emake

Cluster Manager

1. Download the ElectricAccelerator-<`version>.<`build_number>`-ContainerClusterManager.tar.gz` file from https://downloads.cloudbees.com/cloudbees-build-acceleration/. 2. Enter: tar xvzf ElectricAccelerator-<`version>.`<`build_number>-ContainerClusterManager.tar.gz` The files are extracted to a directory named cm. 3. Enter: docker build -t= -f=cm/Dockerfile-cm-rh cm or: docker build -t= -f=/path/cm/Dockerfile-cm-rh /path/cm

Agent

1. Download the ElectricAccelerator-<`version>.<`build_number>`-ContainerAgent.tar.gz` file from https://downloads.cloudbees.com/cloudbees-build-acceleration/. 2. Enter: tar xvzf ElectricAccelerator-<`version>.`<`build_number>-ContainerAgent.tar.gz` The files are extracted to a directory named agent. 3. Enter: docker build -t= -f=agent/Dockerfile-agent-rh agent or: docker build -t= -f=/path/agent/Dockerfile-agent-rh /path/agent

Running the Docker Image to Create a Container and Start eMake, the Cluster Manager, or Agents

Component

Steps to Run a Docker Image to Create a Container and Start the Component

eMake

To run a Docker image to create a container and start eMake, enter: docker run -itd -v <bind_mount_a_volume>:<bind_mount_a_volume> -w [--name=] <emake_image_name> where xxx is your custom name for the container (optional), and xxx is the name of the Docker image. For example: docker run -itd -v` /home/dev/prj:/home/dev/prj -w /home/dev/prj ` --name=emake_container1 emake_10.0_ubuntu_alpha The -d option runs the container as a daemon.

Cluster Manager

To run a Docker image to create a container and start the Cluster Manager, enter: docker run -idt -p 80:80 -p 8030:8030 -p 8031:8031 -p 443:443 -p 3306:3306 [--hostname=] [--name=] where xxx is the machine on which the container is running (optional), xxx is your custom name for the container (optional), and xxx is the name of the Docker image. Specifying the container hostname or IP address on which the container will run ensures that you can use this hostname or IP address (rather than the container name) when using the --emake-cm= eMake option to invoke eMake. For example: docker run -idt -p 80:80 -p 8030:8030 -p 8031:8031 -p 443:443 -p 3306:3306 - --hostname=garfield3 -name=cm`_container1 cm_10.0_rh_alpha` The -d option runs the container as a daemon. The -p option specifies which ports to expose.

Agent

To run a Docker image to create a container and start the agents, enter one of the following commands based on your version of Accelerator. docker run --privileged=true -idt -e CM_HOST_AND_PORT=\<host\[:port\]\> -e AGENT_RESOURCE=linux [--hostname=<*hostname* >] --device /dev/efs --net=host [--name=<*container_name* >] <*image_name*> where `<host[:port]>` is the IP address and port of the Cluster Manager, --hostname=`<container_hostname> is the user-defined name for the host on which the container is running (optional), `--name=`<container_name>is your custom name for the container (optional), and <image_name>is the name of the Docker image. Note: The `-e AGENT_RESOURCE=linux option is not needed for Accelerator 11.2 and newer versions. Following is an example: docker run --privileged=true -itd -e CM_HOST_AND_PORT=192.168.1.97 -e AGENT_RESOURCE=linux --hostname=chester-rh --device /dev/efs --net=host --name=agent_rh_container agent_rh You should use the --hostname=`<container_hostname> option to ensure that the agents have names that are Cluster Manager "resource-friendly." This lets you create resource definitions to restrict the selection of agents to only those agents running in a container of the desired type. For example, set the container hostname to the base hostname plus an addendum describing the type of container, such as `chester-rh or chester-ub1704. Then the agents would have names such as chester-rh-1 so that you could define a Cluster Manager resource as -rh to match all the Red Hat containers. To check that the agents started, go to the Cluster Manager web interface, then click the *Agents tab, and then make sure that the agents are running.