Changing Stacks

Page last updated:

A stack is a prebuilt root file system (rootfs) that supports a specific operating system. For example, Linux-based systems need /usr and /bin directories at their root. The stack works in tandem with a buildpack to support applications running in compartments. Under Diego architecture, cell VMs can support multiple stacks.

Note: Docker apps do not use stacks.

Available Stacks

Cloud Foundry includes support for the following stacks:

  • cflinuxfs3: The Linux cflinuxfs3 stack is derived from Ubuntu Bionic 18.04. Refer to the GitHub stacks page for supported libraries.
  • cflinuxfs2: The Linux cflinuxfs2 stack is derived from Ubuntu Trusty 14.04. Refer to the GitHub stacks page for supported libraries.

    Breaking Change: Support for Ubuntu Trusty 14.04 ends in April 2019. Future versions of Cloud Foundry may remove support for cflinuxfs2. Push all new apps using cflinuxfs3 and migrate existing apps to cflinuxfs3 as soon as possible. For more information about the Ubuntu support lifecycle, see the Canonical documentation.

You can also build your own custom stack. See the Adding a Custom Stack topic for instructions.

Restaging Applications on a New Stack

For security, stacks receive regular updates to address Common Vulnerabilities and Exposures (CVEs). Apps pick up on these stack changes through new releases of Cloud Foundry. However, if your app links statically to a library provided in the rootfs, you may have to manually restage it to pick up the changes.

It can be difficult to know what libraries an app statically links to, and it depends on the languages you are using. One example is an app that uses a Ruby or Python binary, and links out to part of the C standard library. If the C library requires an update, you may need to recompile the app and restage it as follows:

  1. Use the cf stacks command to list the stacks available in a deployment.

    $ cf stacks
    Getting stacks in org MY-ORG / space development as developer@example.com...
    OK
    
    name            description
    cflinuxfs2      Cloud Foundry Linux-based file system
    
  2. To change your stack and restage your application, use the cf push command. For example, to restage your app on the default stack cflinuxfs2 you can run cf push MY-APP:

    $ cf push MY-APP
    Using stack cflinuxfs2...
    OK
    Creating app MY-APP in org MY-ORG / space development as developer@example.com...
    OK
    ...
    requested state: started
    instances: 1/1
    usage: 1G x 1 instances
    urls: MY-APP.cfapps.io
    last uploaded: Wed Apr 8 23:40:57 UTC 2015
        state    since                    cpu    memory        disk
    #0  running  2015-04-08 04:41:54 PM   0.0%   57.3M of 1G   128.8M of 1G
    

    To specify a different stack, append -s STACKNAME to the command.

Stacks API

For API information, review the Stacks section of the Cloud Foundry API Documentation.

Create a pull request or raise an issue on the source for this page in GitHub