Docker is an open-source container runtime for running container images. We are using Docker Swarm which is similar to Kubernetes but from Docker.
The most valuable features of Docker are its security, detailed documentation, and ease of use, and the Docker Swarm is not as complex as Kubernetes.
There is a feature called overlay network for orchestrating containers in Docker Swarm which makes everything easy. You don't need a load balancer, which makes everything easy for accessing in one container. Additionally, it has internal DNS, which is not in Kubernetes.
If you install Docker on a host, it creates its own firewalls. It can become an issue. Usually, when you want to install Docker, you need to restart the firewall or restart the active tables on the machine, but this is not the case with Kubernetes. It uses the default set up by the next administrator, but with Docker, you have to restart the firewall and restart Docker before the firewall on the system will be okay. If you do not the rules will not be created.
I have been using Docker for approximately six years.
The performance of Docker is good. We usually follow best practices before deploying Docker, we have not had any issues since deployment.
Docker is scalable. However, If you want to vertically scale, you have to do it manually. It doesn't have autoscaling.
We have seven people using Docker in my organization.
The support from Docker is very good. The documentation is rich, any issue you face, somebody already faced and the information is available.
The main reason we are using the Docker Swarm instead of using Kubernetes is you can set up Docker Swarm within five minutes. Docker is easy to set up. Once you install it, you can run it. In this case, the container runtime becomes Docker. The reason why we are using it is the vendor recommended Docker for bank sector purposes.
Setting up the master nodes in Docker is very easy.
Docker is a free open-source solution. However, there is the Docker Enterprise which is a paid solution.
The founder of Docker decided to move to Docker Enterprise to make revenue. There are many people moving away from Docker.
My advice to others is if you are using legacy applications they do not run well with containers. The person wanting to use Docker has to ask themself questions about themselves to determine if this solution is best. For example, the application that they want to run has to be scalable. People think Docker or Kubernetes is going to solve their problems, but no. If you have problems, it's going to amplify them, but if you have easy, smooth applications, it's going to make your life easier. The application itself has to be scalable.
The application has to be container ready, such as login inputs, does it follow the 12-Factor principles of deployment, and has security. Even if you don't have security, Docker can help with security if you don't have application security.
You need to consider how you are going to patch the images or the applications and if it will work with languages on WiFi, such as Java, Python, or Ruby version. Those are requirements you need to meet before deploying Docker. You have to find answers to many questions.
I rate Docker a seven out of ten.
I gave my rating a seven out of ten because autoscaling is necessary for cloud-native applications and it is not available. However, it's easy to use, scalable, and straightforward. It was the defacto container runtime for a long time until they went to an enterprise. Docker is very good in CI/CD. Anybody building images is using Docker to build the images and it works well with CI/CD.