Containers provide a common set of building blocks that can be reused in any stage of development to recreate identical environments for development, testing, staging, and production. Containers extend the idea of write once; deploy anywhere, to an infrastructure abstraction that application developers can easily consume and operations professionals can predictably manage.
Containers provide a disposable, reusable unit that can execute a segment of a delivery pipeline. Critical code quality, analysis, build, and test functions can be consistently reused within developer workspaces, continuous integration systems, and release management tools. Service injection into containers allows developers to code more productively and tooling vendors to provide value throughout the pipeline.
"If agile was the opening act, continuous delivery is the headliner."Kurt Bittner, principal analyst at Forrester Research
Connecting developer teams to the continuous delivery pipeline brings feedback into the pre-CI development cycle and increases code commits. By orchestrating on-demand workspaces with containers developers can focus on coding, not configuring.
Integrated builds and constant testing highlights errors earlier in the development process- when they’re easiest to fix. Containers allow continuous integration systems to automate build, test, and configure processes based on recipes.
Deploying every change as a release incrementally opens a continuous feedback loop between development and stakeholders. Containers provide smaller, faster-to-scale deployment units making incremental deployments achievable.