Docker has launched a beta of Docker for Mac and Docker for Windows, two software packages that represent significant software architecture changes made to optimize Docker for an OS-native experience.
While users could previously use Docker on Windows and Mac, the packages remove additional layers of dependencies and offer native, tightly integrated user experience. Docker can now be installed as a native Windows or native Mac app, launched and utilized from a system toolbar just like any other packaged application.
The bottom line is that Mac and Windows users can enjoy faster Docker-driven iteration cycles because their code changes can be tested instantaneously on the laptop without the need to build the Docker application image first.
“Docker for Mac and Windows reflects deep OS system-level work from our Unikernel Systems team and demonstrates how, moving forward, we can leverage native platform capabilities to provide users with the same optimized Docker experience on all platforms,” said Solomon Hykes, Docker founder, chief technology officer and chief product officer. These integrated software packages are designed to remove an additional layer of ‘dependency hell’ for Mac and Windows developers by allowing them to develop directly inside a container.”
The release seems to have come at a right time. The latest Survey by Stack Overflow states that Mac OS X has become the top platform for developer machines. In 2013 Windows 7 held the top position with 48 percent, Linux with 19.9 percent and Mac OS X was in the third spot with 18.7 percent. In 2016, Mac OS X took the top spot with 26.2 percent, Windows 7 at second spot with 22.5 percent and Linux commanded 21.7 percent.
Current State of Affairs
Currently, to use Docker on Mac and Windows requires the use of Docker Toolbox. You have to download it, install a bunch of tools and dependencies for it to work. And since Docker uses Linux-specific tools you can’t run it natively. Instead, you have to use docker-machine and attach to a VirtualBox VM on your system. This VM hosts your Docker. The virtual machine runs the Boot2docker Linux distribution, made specifically to run the Docker daemon.
That’s changing with these two beta releases, explained Patrick Chanezon, Docker chief developer advocate. He explained that Docker for Mac and Docker for Windows utilizes the native hypervisors of these operating systems, eliminating the need to installing additional components. This integrated package includes Docker Compose and Notary offers a streamlined installation process that no longer requires non-system third-party software like VirtualBox. As a result, users get significantly faster performance and refined user experience.
Docker for Windows
To run the new app on Windows, you need Windows 10 (1511 November update, Build 10586) and above, with Hyper-V package installed. Docker for Windows users the hypervisor layer of Windows and then installs a minimal Alpine Linux distribution with Docker engine installed on it. As a result, the developer gets full native experience and deep integration with the Windows machine. You can monitor the running Docker daemon running by clicking on an icon in the system tray icon, it also gives you access to your engine, logs and other stuff. When you go to command line interface on Windows and type Docker commands, they target the Docker engine directly.
Docker for Mac (and Linux)
Running Docker for Mac requires Mac OS X 10.10.3 Yosemite or newer. Your Mac must be a 2010 or newer model, with Intel’s hardware support for memory management unit (MMU) virtualization; i.e., Extended.
Docker for Mac utilizes the new hypervisor framework of Mac OS X that leverages the open source project called xhyve. Docker has invested resources in enhancing xhyve to improve the experience. Similar to Windows, Alpine Linux distribution is installed on xhyve virtual machine and then runs as a native Mac application. Download the application, drop it in the application folder. When it runs for the first time, its installs the needed tools.
So far developers using Linux workstations were able to do in-container development with greater ease, but that was a big challenge for those using Mac or Windows as workstations to deploy applications on Linux machines.
“In container development is big change. Linux developers [have been able to] do in-container developer since the beginning of Docker by mounting their app into the container. But that didn’t work well on Mac and Windows because of the limitations in Virtualbox,” said Chanezon.
With Docker for Mac and Docker for Windows, developers now don’t have to worry about dependencies and virtual machines. “Now you have super easy tools to just develop inside of a container on Mac by mounting your code as a volume and then you use a modified compose file in order to create and push the docker image for production,” said Chanezon.
Both releases come with many additional benefits. Docker for Mac and Windows includes a DNS server for containers and is integrated with the Mac OS X and Windows networking system. Docker now works flawlessly over VPN as they have done a great amount of work on improving VPN support. Developers get the flexibility to choose any IDE or text editor to write their application and use any version control manager.
All the components of Docker for Windows and Docker for Mac are either based on open source projects or are open source. Chanezon told me that they will release many components under open source upon the general availability of the releases.
The beta of Docker for Windows and Docker for Mac are available immediately. These are private betas. When I asked, Chanezon confirmed that there is no selection criterion, it’s first come first serve basis.
“We are just building a waiting list and we will accept more and more people as the quality of the project gets better based on the feedback that we receive from developers,” said Chanezon.
The New Stack is a wholly owned subsidiary of Insight Partners, an investor in the following companies mentioned in this article: Docker.
Docker is a sponsor of The New Stack.
Feature image from Docker.