github.com/rkt/rkt@v1.30.1-0.20200224141603-171c416fac02/Documentation/app-container.md (about)

     1  ## App Container basics
     2  
     3  [App Container][appc-repo] (appc) is an open specification that defines several aspects of how to run applications in containers: an image format, runtime environment, and discovery protocol.
     4  
     5  rkt's native [image format](#aci) and [runtime environment](#pods) are those defined by the [specification][appc-spec].
     6  
     7  _Note that as of late 2016, appc is [no longer being actively developed, other than minor tweaks](https://github.com/appc/spec#-disclaimer-). However, appc is fully functional and stable and will continue to be supported. Future versions of rkt might gain [native support of OCI formats](https://github.com/rkt/rkt/projects/4)._
     8  
     9  ## ACI
    10  
    11  The image format defined by appc and used in rkt is the [_Application Container Image_][appc-aci], or ACI.
    12  An ACI is a simple tarball bundle of a rootfs (containing all the files needed to execute an application) and an _Image Manifest_, which defines things like default execution parameters and default resource constraints.
    13  ACIs can be built with tools like [`acbuild`][acbuild], [`actool`][actool], or [`goaci`][goaci].
    14  Docker images can be converted to ACI using [`docker2aci`][docker2aci], although rkt will [do this automatically][running-docker-images].
    15  
    16  Most parameters defined in an image can be overridden at runtime by rkt. For example, the `rkt run` command allows users to supply custom exec arguments to an image.
    17  
    18  ## Pods
    19  
    20  appc defines the [_pod_][appc-pods] as the basic unit of execution.
    21  A pod is a grouping of one or more app images (ACIs), with some additional metadata optionally applied to the pod as a whole - for example, a resource constraint can be applied at the pod level and then forms an "outer bound" for all the applications in the pod.
    22  The images in a pod execute with a shared context, including networking.
    23  
    24  A pod in rkt is conceptually identical to a pod [as defined in Kubernetes][k8s-pods].
    25  
    26  ## Validating rkt as an appc implementation
    27  
    28  rkt implements the two runtime components of the appc specification: the [Application Container Executor (ACE)][appc-ace] and the [Metadata Service][appc-meta].
    29  It also uses schema and code from the upstream [appc/spec][appc-spec] repo to manipulate ACIs, work with image and pod manifests, and perform image discovery.
    30  
    31  To validate that `rkt` successfully implements the ACE part of the spec, use the App Container [validation ACIs][appc-val]:
    32  
    33  ```
    34  # rkt metadata-service &  # Make sure metadata service is running
    35  # rkt --insecure-options=image run \
    36  	--mds-register \
    37  	--volume=database,kind=host,source=/tmp \
    38  	https://github.com/appc/spec/releases/download/v0.8.11/ace-validator-main.aci \
    39  	https://github.com/appc/spec/releases/download/v0.8.11/ace-validator-sidekick.aci
    40  ```
    41  
    42  [acbuild]: https://github.com/containers/build
    43  [actool]: https://github.com/appc/spec#building-acis
    44  [appc-repo]: https://github.com/appc/spec/
    45  [appc-spec]: https://github.com/appc/spec/blob/master/SPEC.md
    46  [appc-aci]: https://github.com/appc/spec/blob/master/spec/aci.md#app-container-image
    47  [appc-pods]: https://github.com/appc/spec/blob/master/spec/pods.md#app-container-pods-pods
    48  [appc-ace]: https://github.com/appc/spec/blob/master/spec/ace.md#app-container-executor
    49  [appc-meta]: https://github.com/appc/spec/blob/master/spec/ace.md#app-container-metadata-service
    50  [appc-val]: https://github.com/appc/spec/blob/master/README.md#validating-app-container-executors-aces
    51  [docker2aci]: https://github.com/appc/docker2aci
    52  [goaci]: https://github.com/appc/goaci
    53  [k8s-pods]: https://kubernetes.io/docs/concepts/workloads/pods/pod/
    54  [running-docker-images]: running-docker-images.md