Capterra’s researchers use a mix of verified reviews, independent research and objective methodologies to bring you selection and ranking information you can trust. While we may earn a referral fee when you visit a provider through our links or speak to an advisor, this has no influence on our research or methodology.
Capterra carefully verified over 2 million reviews to bring you authentic software and services experiences from real users. Our human moderators verify that reviewers are real people and that reviews are authentic. They use leading tech to analyze text quality and to detect plagiarism and generative AI. Learn more.
Capterra lists all providers across its website—not just those that pay us—so that users can make informed purchase decisions. Capterra is free for users. Software and service providers pay us for sponsored profiles to receive web traffic and sales opportunities. Sponsored profiles include a link-out icon that takes users to the provider’s website. Learn more.
Pros
Great for web-specific microservice-oriented solutions deployments. Supported by all CI/CD platforms.
Awesome when used in conjunction with Kubernetes. The possibilities are endless and your prod environment will be a pleasure to manage, upgrade, scale, etc.
Docker makes containerization easy to use. The dockerfile is especially useful, and the desktop applications make the user experience wonderful.
Docker is de-facto the standard platform any team ends up with. Our devs are super happy with the platform and the ease to rapidly deploy apps.
Cons
Command line gets stuck sometimes. Docker images are too big sometimes should have some garbage collection tools.
There was a lot of talks that it is nothing more than an interface to unix cgroups and that docker has no future, this is just hyped piece of software.
If you do not stop services before shut down your computer, you can get some errors next time you try to use it. Could be an alert/pop up informing to do that before continue the shut down.
The usage is confusing and non-idiomatic. Moreover the interface is not well thought out - for example the poorly named and frequently confused "exec" and "run" commands.
Most Recent Video User Review for Docker
SEE ALL VIDEO REVIEWSSolution for Multiple Clients with Multiple Issues
Mohit A.
Showing Most Helpful
Showing 25 of 527 reviews
"Best tool to manage your web applications"
Overall: All our web applications use Docker for testing purporses and production enviroments and is a must inside our organization.
Pros: I think every software corporation needs to migrate their server architerture to contenerized enviroments and Docker make it easy to maintain and scale all web applications because you can have all your services or microservices running isolated and that gives you the possibility to have multiple softwares developed in different languages for every service that your application needs, for example: You can have a running container with Apache Server for your backend using PHP, and another NodeJS container for your frontend, a MySQL database service for your data and a Redis service for the cache management all in the same network sharing for every project or even for different projects in another networks, possibilities are unlimited.
Cons: In my oppion, there's no cons using Docker, I think you'll get more gains rather than pains in your software business.
"The lean virtual machine tool we've been waiting for"
Overall: Feels like a bit of a learning curve coming from using VirtualBox, vagrant, etc., but when you get that first cluster of virtual environments running interacting apps you know how worth it it was
Pros: Docker works on every platform and makes it simple to match production and development systems. It's similar to older virtual machine and VM management tooling, but much more lean and 100% open source.
Cons: Getting started can be intimidating. While it's worth the time invested, development teams accustomed to working directly on their own hardware or with traditional virtual machine tools will have a bit of a learning curve.
"Fundamental for modern software services"
Overall: We are running a fleet of microservices on Amazon ECS and Docker is part of our development, testing, staging and production environments.
Pros: It's become a de-facto standard and there are a lot of resources online to learn everything, from basics to the really advanced tidbits.
Cons: Being a very complex system, sometimes it's hard to keep track of all the parts. Is runc part of Docker? What about containerd? What's moby? The fact that operating system packages with the same name include different things doesn't help. Sometimes there are also subtle bugs that take days to track and attribute to Docker.
"Docker: Light weight Container Setup and Configuration"
Pros: I have used Docker to run multiple Java and Python virtual environment in sandboxed isolated containers on Ubuntu Linux. The main motivation was to support the testing of different Application server versions using Apache Tomcat and Oracle JDBC drivers. Docker containers saved us a lot of time that we used to spend on creating and configuring virtual machine and more importantly enhanced greatly the performance and throughput of the testing services. We were able to execute multiple Oracle instances using the Docker containers and creating isolated client/server applications using the Socket API on top of it.
Cons: I expect to see more support for containerized applications on multiple machines and more scalability, resiliency, and fault tolerance as in Kubernetes.
"An essential companion in my development environment."
Overall: I replicate locally the setups of all my remote server via docker compose. With docker you can have multiple versions of the same service without risk of collision or incompatibilities.I use it on wsl on windows and it works like a charm.
Pros: I work in web development industry, with docker you can replicate on your machine any setup, (web server, database, smtp) , so that you can build your application in an environment that is almost identically to production one.
Cons: I find that the learning curve is steep, so you have to struggle in the beginning to master the tool. Sometimes containers are resources' hungry, so adequate monitoring is needed.
"A DevSecOps must have"
Pros: The best feature I like about docker is that I can encapsulate work in a container and deploy it anywhere like Azure Container Instances, Amazon EKS, Digital Ocean or even my desktop. I like to create containers with python + security tools like SSL Scanners and deploy them near the servers to test and outside the servers to test to have an accurate picture of what's supported. It also helps with powershell core since you can create docker container with specific modules and give them to co-workers so they don't have to install the modules on their PCs. I also like integrations like Trivy that come built-in to docker desktop so you can scan the images for vulnerabilities and also like Slim.AI to make images smaller.
Cons: The recent licensing changes made me discover Podman and switched a few workloads already.
"A must for every developer. Isolation is a powerful thing"
Overall: I have been using Docker for years. I daily use it to build local development environments, as well as production containers. I think that it’s a “must have” in all kinds of modern software architectures. It applies very well to monoliths, too. It’s not a thing that empower only the micro-services paradigm.
Pros: The portability and the robustness it gives by applying isolation and virtualisation.
Cons: Some simple things, such as to be on tail of current logs, are hard to replicate. A better built-in support for monitoring could be a huge enhancement for Docker.
"Vibrant Application for Swift Development "
Pros: Docker is aggressive in making valuable development for any application.
Cons: Docker is consistent and it delivers sustainable ways for application handling.
"Really good tool"
Pros: I think it's an industry standard right now and it works well
Cons: It is a tool that requires a good knowledge to really know how it works, it is not accessible to everyone and it is not very user friendly.
"Great Orchestration tool"
Pros: Using docker has been a relief for me having my application in a safe place to put them during the development stage has been good always.
Cons: This tool is using a lot of my CPU space
"Docker Overall Review"
Overall: I have been using Docker for a few months now, and overall, I have had a positive experience with the tool.One of the things that I like most about Docker is its portability. Containers are lightweight and portable, which makes it easy to deploy applications on different environments and platforms. This has been particularly useful for me, as I often work with a variety of different systems and environments.I have also found Docker to be very helpful for ensuring consistency across environments. By packaging up all of the necessary code, libraries, and dependencies in a single container, Docker helps to ensure that my applications will run the same way regardless of the environment in which they are deployed.In addition to its portability and consistency, I have also found Docker to be very scalable. It is easy to create and deploy new containers as needed, which makes it straightforward to scale applications up or down as needed.Overall, I have had a positive experience with Docker and would definitely recommend it to others. It is a useful tool that can help to streamline the development and deployment process, making it easier to build and manage applications.
Pros: - Portability: Docker containers are lightweight and portable, making it easy to deploy applications on different environments and platforms.- Consistency: Docker helps to ensure consistency across environments by packaging up all of the necessary code, libraries, and dependencies in a single container.-Scalability: Docker makes it easy to scale applications by allowing you to quickly create and deploy new containers as needed.- Ease of use: Docker provides an intuitive and user-friendly interface for managing containers and images.
Cons: -Security:Docker containers can potentially introduce security vulnerabilities if they are not properly configured and maintained.-Resource utilization:Docker containers can consume resources such as CPU and memory, which may impact the performance of other applications running on the same host.-Complexity: Using Docker may add an additional layer of complexity to the application development and deployment process.
"With Docker, Serve Users Anything Or Everything That Is Hosted As A Service"
Overall: Docker images may be created relatively easily, and distributing them is even easier. We can easily containerize and host our lengthy code, which allows us to work quickly on production. With Docker, we can serve users anything or everything that is hosted as a service.
Pros: I can state with certainty that it has helped me avoid a lot of time-consuming problems with software deployment. Our large project can be divided into smaller components, which we will then deploy in containers to enable independence. We can provide the appropriate environment needed to run our project using a Docker Image file. Applications can be set up and executed more quickly with the help of a large selection of pre-built containers.
Cons: Images can occasionally be quite huge, and Docker can use quite a lot of CPU and memory on a computer. On systems with little setup, it ages. For it to function effectively, a decent system is needed. The performance of Docker Desktop might be enhanced.
"De-couple your huge applications and make them independent with Docker!"
Overall: We are already in the process of refactoring all our internal applications into microservices architecture. Containers are the future of application development and therefore, almosy every software company is already working on this transition with full force. Since docker is the heart for containerization, it is evolving with time and is helping companies revolutionize their softwares.
Pros: 1. Huge database for base images: Dockers works with Docker Hub by default which has a huge database of base images which includes Operating Systems with very limited tool set installed on top. This helps make the OS super light and can be downloaded and ran under minutes. 2. Any docker image runs as a container/ service which is independent from any other containers. However, each container can run in conjuction with other containers and they can even restart and be alive at all times automatically. 3. DockerFiles can be used to build docker images easily which can then be posted on DockerHub for private or public usage.
Cons: Docker lacks containerization due to which it is used only as the underlying software and not as a primary software. Containerization is a large part of microservices, therefore, this is one of the cons of docker. However, many third party orchestration tools are available for performing these activities.
"Docker Swarm makes management of cluster super easy"
Overall: I lover the philosophy behind the design of Docker and Docker Swarm. As a developer, my experience with using Docker was great and takes a lot of headaches away from the developer.
Pros: Docker Swarm makes setting up a server cluster very easy. With just a few commands, can setup a cluster and start deploying services. Compare to Kubernetes, it reduces the time to setup things like the Api server, the cluster db, and other components. Everything just came with the tool.
Cons: Not a lot of discussion about Docker Swarm compare to Kubernetes. Community is a lot smaller. Not a lot of cloud services available using Swarm other than Docker Enterprise. Pretty much all the cloud service providers have Kubernetes support.
"Build, develop and publish software just the way you want it!"
Overall: I use Docker every day for my scientific projects. Here, platform-independent reproducibility of software projects is important. Docker is a solid, persistent and controllable software environment. Furthermore, I use Docker when dealing with my students so that they can use an operating system of their choice and I can still improve their software, homework and exams.
Pros: Docker is the ideal container virtualization for private as well as commercial software projects in need of scalability. Docker impresses with its do-it-your-way building block principle, which implements simple and platform-independent develop- and deployment solutions. Ingeniously, Docker enables cross-project development of software as if it were already in a deployment mode.
Cons: Actually, there are hardly any drawbacks with Docker. When it comes to small-scale troubleshooting, the fixes are mostly robust and long-lasting. However, images can sometimes become too large because developers want to avoid the time-consuming work of memory optimization.
"Solid position, rocky start"
Pros: The basic usage is pretty simple, and it makes local development of server applications much easier.
Cons: It's a unix tool, but when it first came out it had a very non-unix feel to it, breaking certain conventions. Sometimes it feels like certain parts were written by an inexperienced intern. It's not well thought out, and you'll often end up scratching your head trying to remember the difference between "create', "exec", "run" and "start" (among others).
"Docker - for your everyday shipping (container) needs!!"
Overall: We have our various products interacting with each in the form of microservices which has been possible due to dockerization. Its the backbone of the hosted infrastructure as it helps to build this apps, distribute and deploy them predictably every single time.
Pros: 1. Containerization - this wasnt even a word before Docker made it a household verb for every developer. Allowing multiple services to be independent of each other, in other words to form a microservice by virtualization at the VM level. Its a Linux ship! 2. Rapid Deployment - developer can simply push the build and deploy happens atuomatically 3. Images are easily available in plenty for consumption 4. Intuitive command line interface 5. Its predicatable - Works exactly the same way on any OS platform and that augurs well for enterprise needs
Cons: 1. Breaking a monolithic application into microservices is tough and hence, dockerization of an existing application can take some amount of investment 2. A bit of learning curve if not hands-on with linux. 3. High load throughput can be troublesome at times, docker hangs in such situations 4. Debugging can be a challenge sometimes 5. Backward compatibility with various Docker versions is also spotty. 6. Docker can be an overkill if the application is already on Amazon lambda, Elastic Beanstalk
"Software development made easy for continuous deployment"
Overall: Increased our productivitySaves manual configuration time again and againEasy one line command deploymentEffective resource utilization as we can assign RAM/CPU per container
Pros: Easy to deploy application with one single commandNo need to configure services again and againEasy to allocate resources(Ram/CPU) per containersVolumes can be created to manage offline(mounted) files(reused)Applications can be containerised and we can create image, we can share the push this image to central repository/Docker Hub, then it can be pulled on any nodes to create copies of applications for faster deployments
Cons: Cant be used for continuous integration and docker dont assure of availability as if container gets down all the services inside container gets down, which cannot be automatically orchestrated on creating new containers for high availability
"Great - but could be lot better"
Overall: Mainly we use it for managing our application instances (multiple instances of same application for many users)
Pros: Configurability and the basic setup is quite straight forward - you can basically get something up and running within few hours. This gives you infinite possibilities in extensibility and the manageability - but with some limitations that can be addressed with some third part applications.
Cons: Steep learning curve involved as well as lack of in-built monitoring an recovery tools. You have to depend on lot of "third-party" application to make this a production ready system.
"Remove Excuses"
Pros: Docker is like a virtual machine, where your computer is running a different environment but it's somehow not a real virtual machine, it's like a "slice" of functionality. The basic idea is, everyone can develop in the exact same environment (always CentOS version 6.2, PHP version 7.1.2, Nginx version blah blah blah). Theoretically, you'll never run into the "well it works fine locally!" problem. An example when doing website development, and there is frustration when one Mac has a bunch of weird stuff installed that makes it hard for the developer to get the site up and running. With Docker it's like, "okay run these commands and it'll spin up an environment that's identical to what's working for me" and not screw up your current Mac settings. If you've already got a `docker-compose.json` file ready, that's a good part of the battle, then it's just `docker-compose up`.
Cons: Docker takes quite a bit to spin up and manage (but it seems like the world is moving to Docker). Major dislike is how much research has to be done when I often find myself asking "wait, why is my hard drive so full of old Docker images? why didn't they get deleted automatically?" and having to google stuff like that. Also, wrapping your head around your host (Mac) vs container.
"Requires In-App Purchases"
Overall: Using a "free trial" approach would be a better way for Docker to prove their excellence in the cross-platform deployment sector because they'd already drawn me in and won me over, but forcing me to buy another product to manage what their first product helped did was not a good way to make a loyal customer. A free trial would have been able to impress me much faster and let me convince myself instead of being stuck "going without".
Pros: Docker made the deployment across a heterogeneous ecosystem very easy and much faster than before. Helped integrate across diverse platforms with less effort on my part.
Cons: Mini-docker containers were a little difficult to manage and the app didn't include free software to manage them. What good is a technology that lets you package and ship out the apps without giving you a way to mange them as well?
"Automate what used to take weeks and careful planning"
Pros: I love how testable docker is outside of needing to spin up a new server every time you make a change to a dockerfile build. This way, I can iterate very fast on any changes I want to make and have the benefit of caching old steps in the build to make it even faster locally.
Cons: This is a problem more because we have been using docker for many years, but the offerings have changed recently in terms of how you run docker on Mac vs Linux causing the old instructions of how we used to install the software and VM on our machines (docker-machine) to be outdated. This has caused issues with installing it on newer employees computers but we just need to accommodate ourselves to how the new deployment infrastructure of docker for mac works.
"An extremely powerful tool to run your server applications in a closed environment."
Overall: Docker is a must-have tool if you run multiple app/services on a single server by isolating each of them in its own environment. When you have an issue it is so much easier to fix it within the container then having to mess with the main server where everything would be hosted.
Pros: When I found Docker and what it can do I was amazed by how powerful it is. Each container is a closed environement like a VM would be but it is super easy to deploy and configure. I wish I would have known docker sooner as I had so much trouble migrating things from a server to another back in the days but now with docker it is so easy to do and this is just amazing.
Cons: I would like docker to have a web UI where you can manage your container from there. Yes you can use Portainer but I wish it would be there by default when you install portainer. A command line tool can repel some users to learn Docker.
"The standard container solution in 2020"
Overall: I use it every time I need to build a microservice architecture. Also, transparently, it runs my apps on Google AppEngine. It also comes in handy when needing to run software with many dependencies that you don't necessarily want to install on your OS.
Pros: Docker is used by millions, meaning that most software you'll encounter supports it out of the box. In addition to that you have their container registry, Docker Compose, and other helpful tools that make using it as frictionless as possible.
Cons: Docker is UNIX software created by people who probably never used a UNIX system. The usage is confusing and non-idiomatic. Moreover the interface is not well thought out - for example the poorly named and frequently confused "exec" and "run" commands.
"Excellent software for providing containers for distributed system"
Overall: I have used it to deploy code and run services and containers have been a satisying experience.
Pros: 1. Very easy to deploy for your distributed system. 2. Memory effective and provide ways of clearing dangling docker images. 3. Helps in rapid deployment of code and rollbacks. 4. Provides flexibility to run the services anywhere helping a lot in remote work and cloud deployment. 4. Great for collaboration in heavy pipelines and local testing before deployment in cloud. 5. Great command line options for various features and functionalities.
Cons: 1. Fast updates lead to stale documentation which can cause issues. 2. Switching to Docker containers can be a steep learning curve and can be time consuming.