Why Docker for Azure?Estimated reading time: 4 minutes
The Docker for Azure project was created and is being actively developed to ensure that Docker users can enjoy a fantastic out-of-the-box experience on Azure. It is now generally available and can now be used by everyone.
As an informed user, you might be curious to know what this project offers you for running your development, staging, or production workloads.
Native to Docker
Docker for Azure provides a Docker-native solution that avoids operational complexity and adding unneeded additional APIs to the Docker stack.
Docker for Azure allows you to interact with Docker directly (including native Docker orchestration), instead of distracting you with the need to navigate extra layers on top of Docker. You can focus instead on the thing that matters most: running your workloads. This helps you and your team to deliver more value to the business faster, to speak one common “language”, and to have fewer details to keep in your head at once.
The skills that you and your team have already learned, and continue to learn, using Docker on the desktop or elsewhere automatically carry over to using Docker on Azure. The added consistency across clouds also helps to ensure that a migration or multi-cloud strategy is easier to accomplish in the future if desired.
Skip the boilerplate and maintenance work
Docker for Azure bootstraps all of the recommended infrastructure to start using Docker on Azure automatically. You don’t need to worry about rolling your own instances, security groups, or load balancers when using Docker for Azure.
Likewise, setting up and using Docker swarm mode functionality for container
orchestration is managed across the cluster’s lifecycle when you use Docker for
Azure. Docker has already coordinated the various bits of automation
you would otherwise be gluing together on your own to bootstrap Docker swarm
mode on these platforms. When the cluster is finished booting, you can jump
right in and start running
docker service commands.
We also provide a prescriptive upgrade path that helps users upgrade between various versions of Docker in a smooth and automatic way. Instead of experiencing “maintenance dread” as you ponder your future responsibilities upgrading the software you are using, you can easily upgrade to new versions when they are released.
Minimal, Docker-focused base
The custom Linux distribution used by Docker for Azure is carefully
developed and configured to run Docker well. Everything from the kernel
configuration to the networking stack is customized to make it a favorable place
to run Docker. For instance, we make sure that the kernel versions are
compatible with the latest and greatest in Docker functionality, such as the
overlay2 storage driver.
Instead of facing the trade-offs of a general purpose operating system, Docker’s custom Linux distribution focuses on only one thing: providing the best Docker experience for you and your team.
Self-cleaning and self-healing
Even the most conscientious admin can be caught off guard by issues such as unexpectedly aggressive logging or the Linux kernel killing memory-hungry processes. In Docker for Azure, your cluster is resilient to a variety of such issues by default.
Log rotation native to the host is configured for you automatically, so chatty logs don’t use up all of your disk space. Likewise, the “system prune” option allows you to ensure unused Docker resources such as old images are cleaned up automatically. The lifecycle of nodes is managed using auto-scaling groups or similar constructs, so that if a node enters an unhealthy state for unforeseen reasons, the node is taken out of load balancer rotation and/or replaced automatically and all of its container tasks are rescheduled.
These self-cleaning and self-healing properties are enabled by default and don’t need configuration, so you can breathe easier as the risk of downtime is reduced.
Logging native to the platforms
Centralized logging is a critical component of many modern infrastructure stacks. To have these logs indexed and searchable proves invaluable for debugging application and system issues as they come up. Out of the box, Docker for Azure forwards logs from containers to a native cloud provider abstraction (a storage account in the created resource group).
Next-generation Docker bug reporting tools
One common pain point in open source issue reporting is effectively
communicating the current state of your infrastructure and the issues you are
seeing to the upstream. In Docker for Azure, you receive new tools
to communicate any issues you experience quickly and securely to Docker
employees. The Docker for Azure shell includes a
script which, at your request, transmits detailed diagnostic information to
Docker support staff to reduce the traditional
“please-post-the-output-of-this-command” back and forth frequently encountered
in bug reports.