Platforms
Docker
Packaging an application and its dependencies into an image, so the same build runs on a laptop, in CI and in production with much less environment drift.
Part of Tailor-made Software Development
Docker packages an application with its libraries and runtime into an image, which can then run on a developer's laptop, in CI and in production.
Where it fits
Without containers, development, staging and production tend to drift apart in library versions and operating system patches, and some defects reproduce in only one of them. With an image, production runs the same build that passed testing. Docker Compose runs a multi-container application on a single host, so a new developer can start the system with one command.
Its limits
Containers share the host's kernel, and an image is built for one CPU architecture (amd64 or arm64) unless it is published as a multi-architecture build. Configuration, secrets, mounted volumes and resource limits still differ between environments, so some "works on my machine" problems remain. Docker's Swarm mode can run containers across several hosts, but for production orchestration teams usually choose Kubernetes or a managed container service such as Amazon ECS. Images also inherit vulnerabilities from their base layers and need regular scanning and rebuilding.
How we use it
Our pipelines build one image per change and promote that image through each environment. Rolling back means running the previous image, which works only if database changes are backward compatible, so we plan migrations for that.
Related
DevOps & CI/CD, Cloud Migration & Architecture, Application Modernization