Docker
Docker is a containerization tool designed to make it easier to create, deploy, and run applications and services. This is made possible via Docker Containers. Containers make it possible to package up complete apps and services with all of the components they need, such as code libraries and other dependencies.
The bottom line is that once an app or service can be successfully built in any given environment, developers and clients can rest assured that it will be able to run on virtually any desktop or cloud environment. This eliminates the huge problem of conventional app and service deployments, in which locales, platforms, dependencies, and other variables can make it extremely difficult to ensures that an app that deploys successfully in one environment will do so in any other.
In a way, Docker is a somewhat like a virtual machine. But unlike a virtual machine, rather than creating a whole virtual operating system, Docker allows applications to use the same kernel as the system that they’re running on, enabling applications to be shipped only with things not already running on the host computer. This greatly reduces the size of Docker applications.
In addition, Docker provides significant deployment and performance advantages, particularly in cloud environments. Because Docker containers are so light, it is very common for cloud providers to automatically spin up multiple additional instances of Docker apps as demand increases (this can be done in a fraction of a second). These same Docker instances can be quickly destroyed a moment later if demand increases. This architecture dovetails nicely with the capabilities of web-scale environments like AWS, Azure, and many others, and works particularly well with Content Distribution Network (CDN) environments.
Within Beezwax itself, Docker is the primary delivery vehicle for Beezwax’s Server-side Swift offerings. Docker makes it possible for us to develop apps within local Docker containers, and be confident that we can deploy virtually anywhere without worry that we’ll hit unexpected blocks or behaviors due to locale variables.