Docker overview
Docker is used to build, ship, and run distributed applications. You can configure your application instance to include Dockerized services.
A Dockerized service contains a Docker pod. A Docker pod can consist of one or more collocated containers. For more information on Docker, see What is Docker.
Before you can configure Dockerized services
The Docker Controller enables these products to launch and control groups of tightly coupled Docker containers and named pods, by providing pod management logic and abstracting communication with the Docker daemon. You can find the Docker Controller source code and README file from $EGO_SERVERDIR/egodocker.
Configuring Dockerized services when you develop your application instance
When you are developing an application instance, if you want to include Dockerized services, configure Docker in your application template. For a list of all the Docker parameters and attributes, see the Application template reference.
Using an application instance package, you can deploy the Docker image to your Docker hosts when you deploy the application instance, rather than when you start it. You can either put the Docker image into a package, which depending on the Docker operation you use, loads or imports the image from a .tar file; or you can use a package install script to pull the image from a source, for example the Docker registry. For more information, see Service packages.
After Docker is installed and the application instance is deployed
Once you have Docker installed and the application instance is deployed, you can define, start, stop, and remove services with one or more Docker containers on all Docker active hosts. EGO passes the user-defined Docker container information from the EGO service controller (egosc) to the EGO kernel daemon (vemkd). The process execution daemon (pem) runs the Docker Controller that controls all of the Docker containers that are defined for a service instance. The Docker Controller uses a remote API client module to interact with the Docker daemon.
When a service with Docker containers is started, a service instance is created on one Docker host. A service instance with Docker containers is also known as a Docker pod instance. In a service instance, there can be one or more collocated Docker containers, running on the same host.
If a job monitor is not defined, the service instance enters the RUN state after the Docker pod is successfully started by the Docker Controller. The service instances enter the FINISH state after the Docker pod is shut down by the Docker Controller.
Pod monitoring takes effect after pod startup is complete. By default, the Docker Controller logs an error and initiates pod shutdown if any containers stop running unexpectedly. If a job monitor script is defined for the service, the Docker Controller passes pod monitoring responsibility to the job monitor. In this case, the Docker Controller attempts to shut down the pod only if all working containers in the pod stop running. For details on pod monitoring, see the pod monitoring section in the README file in $EGO_SERVERDIR/egodocker. For more information, and for a Docker job monitor script to print out the container names and states, see Job monitor.
The following high-level diagram illustrates how Platform ASC supports Docker:

Environment variables for Docker containers
Environment variables can be specified as key-value pairs in the Docker pod specifications in Platform ASC. For more information, see Environment variables for Docker containers.