Overview
The Docker style applications are very similar to container applications from a deployment perspective. The only notable difference is the build process in which the developer uses Docker tooling to create an application root file system.
Caveats and Restrictions
- The package descriptor file (package.yaml) is used to define the IOx application requirements. For Docker type applications, it is not mandatory to create an application descriptor file because the ioxclient creates a default package descriptor file. You can add additional attributes or modify defaults values using LABEL instruction in Dockerfile (e.g. LABEL cisco.cpuarch=x86_64).
- Docker images that are heavily dependent on constructs provided by Docker (e.g. Dockerfile commands) WILL NOT run out of the box on platforms that don't support native docker engine. You must use equivalent attributes in Dockerfile or package.yaml if available. (e.g. ENV Dockerfile constructs can be translated to package.yaml's app->env section.)
- Docker apps MUST bring the entire rootfs as part of the application package. The rootfs MUST be in Docker image format which is a tar ball that preserves all layers and layer information from the Docker image.
- Docker style apps CANNOT use any cartridges available on the platform.
- Docker style apps MUST not use any init system for container startup. The target command will be a user defined process.
- Although it is theoretically possible to run any Docker image, the image size should be compatible with available resources on the platform.