The challenges

So, why have we been looking at extending the core Docker Engine? Here are a few scenarios that the tools we have covered in the previous chapters could be used to add value or resolve a potential problem.

Development

Way back, at the start of Chapter 1, Introduction to Extending Docker, we saw the Worked fine in dev, Ops problem now meme and how it is worryingly still relevant today. Containers go a long way to resolve this issue; in fact, Docker is seen as a great unifier by a lot of people.

However, if developers do not have a way of easily introducing these tools into their day-to-day lives, then you are not resolving the issue raised by the meme.

The tools that could help developers start to use Docker locally as the first step of the development process are as follows:

  • Docker Toolbox
  • Docker Machine
  • Vagrant

Along with the recently announced, but currently in private beta, native versions of Docker for OS X and Windows, more details on this can be found in the announcement blog post at https://blog.docker.com/2016/03/docker-for-mac-windows-beta/.

Additionally, depending on your existing workflows, you could also use the following tools to introduce containers to your existing workflows:

  • Ansible
  • Jenkins
  • Packer
  • Puppet

Staging

Depending on your requirements, you could use the following plugins in conjunction with Docker Compose to create a basic staging environment with multi-host networking and storage:

  • Convoy
  • Docker overlay network
  • Docker Volumes
  • Flocker
  • REX-Ray
  • Weave

You can also use these tools to give you a good level of control over where the containers are deployed within your staging environment:

  • Ansible
  • Docker Swarm
  • Jenkins
  • Puppet
  • Rancher

Additionally, your developers could have some level of access in order to be able to deploy a test version using these tools either via continuous integration tools, web interfaces, or via command line.

Production

Again, you could use the following plugins to create a basic production-ready environment using Docker Compose:

  • Convoy
  • Docker Overlay Network
  • Docker Volumes
  • Flocker
  • REX-Ray
  • Weave

However, you will probably want your production environment to look more after itself in terms of reacting to failure, scaling events, and automatic registration of containers with services such as DNS and Load Balancers:

  • Ansible
  • Amazon ECS
  • Docker Swarm
  • Kubernetes
  • Puppet
  • Rancher

All these listed tools should be considered production-ready. However, as Puppet and Ansible offer little in the way of scheduling, you should only really consider them if you are introducing Docker into an existing Puppet or Ansible-managed environment.

If there is one thing I hope you have taken from this book, it is that there doesn't have to be one size fits all when it comes to using Docker.

As we discussed, there are tools supplied by both Docker and third parties that allow you scale your containers from a single host to potentially hundreds or thousands.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset