It's open source. It makes you able to have a self-contained of an entire platform to run, test or develop a specific application. To work in a team is the best option because you and your team don't have to be worried about if you have different versions of libraries or languages or servers or operating system, all your project needs are going to be contained in the docker image.
Taking into account that you don't need a Virtual Box or another machine virtualization system is another big advantage over similar systems such as Vagrant.
It has a lot of plugins to give you more features, for example, docker-compose that is a plugin that allows you to define a file where you decide the images (Multiple containers) you want to be in your application platform, who and how is going to be linked with, define the service ports that are going to be exposed to use them out of the container.
Another useful plugin could be docker swarm that allows you to have persistence of data in volumes, or outside containers.
- The support for MAC is not native.
- It doesn't have a GUI to help the user be able to use easily without learning commands and how to define a dockerfile.
It allows to be more proactive due to the developer's team because we only need to be worried about programming our project, we don't need to be worried about what version of whatever I need to run my application, or if I need a different version for another project. It's very fast to start a new project.