Docker is a software container platform. Using docker one can easily containerize the application in a secure and portable way. This makes it easy to handle dependencies between different applications that you are working on as each application will then get a separate isolated container with all the required dependencies. This also make the workflow of developing and deploying applications easily as it doesn’t matter which operating system or dependency versions are installed on the server or your workstation. This really is a great way to deploy applications in production environment as generally production servers use a very stable operating system such as centos or debian which generally ships very old and stable versions of most softwares. But while developing you generally develop with latest stable versions of packages. But using docker you can unify the environment in which your application in running across different machines.
Docker also makes shipping applications easier as it uses a special file called Dockerfile which can be used to build images. Images can be stored on central registries like Docker Hub. From there anyone with necesarry permissions can fetch the images and run it locally.
I make and maintain some Docker images about which you can read in dedicated sections down below.