What is our primary use case?
We are a service provider and we have various use cases. However, the most prominent one is that instead of virtualizing the application workloads, we use Docker. Docker allows you to create small applications and containerize them. You can create multiple such application containers that can run simultaneously on the Linux operating system.
How has it helped my organization?
We use Docker because if we want to create an application using Node.js, an environment for backend and frontend technologies, we can deploy this single application in a container. This container will run independently of its underlying OS.
If you want to migrate this application to a different server, migrate the container image to the new server and start using the application there. This makes developers' jobs much easier because they don't have to copy everything the application needs. They just copy the container image, send it to a different server, and start using it there. All the required libraries, packages, and dependencies are encapsulated within that container. The container contains everything it needs to run. In a DevOps environment where multiple teams are creating applications, developing new versions, and deploying applications frequently, Docker is very helpful.
What is most valuable?
The greatest benefit of the solution is that you can create applications and multiple versions of the same application, distributing them across various Linux platforms. Setting up Docker is very quick; whereas setting up a Linux operating system can take five to ten minutes, you can set up a Docker-based Linux OS container within minutes. Docker also has a small footprint on memory and resources because it uses the system's resources efficiently. It operates within its environment, independent of the underlying operating system, running in its namespace. This isolation prevents negative impacts on the system.
For developers who frequently create and deploy applications, Docker makes it easy to quickly develop, deploy, and run the latest versions. You don't need to manage the operating system, applications, dependencies, or data separately; everything is encapsulated within the Docker container itself.
Moreover, AI is another application you can use through Docker. AI can help you set up more efficient Docker-based workloads. The role of AI is to guide you and provide the necessary knowledge for various tasks, whether it’s related to Docker or anything else. Additionally, AI itself can run as a container using Docker.
What needs improvement?
There's always room for improvement. Sometimes there's a bug or defect in the solution. However, the Docker team works on fixing it.
What do I think about the stability of the solution?
The solution’s stability is great. I rate it a nine out of ten.
What do I think about the scalability of the solution?
Regarding scalability, Docker doesn't require any separate configuration for multiple users. Suppose you create a container and expose it to the public via an IP address and port. The ability to serve the number of users depends on the system's resources, like RAM, CPU, and storage. You can create or scale the number of containers based on these resources, and manage the number of users accordingly.
For example, if I have a small server, I can create containers and share them with the outside world according to the available resources. The server's ability to handle the number of users depends on its resources. Docker doesn't restrict you to a certain number of users; hundreds or even thousands of users can access the containers. Most of our customers are using the product.
How was the initial setup?
The initial setup hardly takes minutes. All the container images are available on Docker Hub when you create a container. Docker Hub is a repository, like an App Store for containers. If you use Windows or Mac, you have an App Store where you can download and start using any application you want. Similarly, Docker Hub is the application store for containers. It's a cloud-based solution. In Docker Hub, you can find all kinds of container images. If you want to install an Apache server, a Postgres database server, or any other server—even Linux and Windows servers—they are all available in containers. Anyone who wants to use these can immediately download and start using the container image.
What's my experience with pricing, setup cost, and licensing?
Our customers buy the software and the prices are available on Docker Hub. The subscription is typically yearly, and customers will need to buy the subscription directly. They can purchase it themselves.
Which other solutions did I evaluate?
The product is similar to GitHub.
What other advice do I have?
If you are trying to create an application quickly for testing or development purposes, Docker is the best tool available. Docker can also be used on Mac and Windows with a tool called Docker Desktop. You can start using Docker there by installing Docker Desktop on a Windows or Mac system.
Whenever a new Docker image is created by the OEMs, like MySQL for instance, they name the new image with the version number. If you want to check the latest version, you can go to Docker Hub and search for it. There are multiple versions available, and Docker also allows you to create your own version. So let's say your company has specific requirements for MySQL. You can download the original MySQL image from Docker Hub, install a couple of additional applications within the Docker container, and share this customized Docker image via your own repository on Docker Hub.
There are two kinds of updates: one within the Docker technology itself, where the creators of Docker keep updating the Docker engine, and another for the Docker images. The Docker engine is the software tool that runs on your system, and the global team working on it keeps it updated. You can always check for the latest version of the Docker engine and upgrade as needed.
Moreover, container orchestration is a different technology. You need Kubernetes to orchestrate the containers in the solution. A single container is independent, but Kubernetes is an orchestration tool that manages these containers using its control and data planes. For example, if you have hundreds of containers, it takes work to manage each one independently. You need some orchestrator to control these containers' life cycles, maintain high availability, and more. Kubernetes handles this container orchestration.
Overall, I rate the solution a nine out of ten.
Disclosure: My company has a business relationship with this vendor other than being a customer. Partner