What is Docker?

The Docker Platform is the industry-leading container platform for continuous, high-velocity innovation, enabling organizations to seamlessly build and share any application — from legacy to what comes next — and securely run them anywhere
Docker is a tool in the Virtual Machine Platforms & Containers category of a tech stack.
Docker is an open source tool with GitHub stars and GitHub forks. Here’s a link to Docker 's open source repository on GitHub

Who uses Docker?

Companies
8885 companies reportedly use Docker in their tech stacks, including Pinterest , Shopify , and Spotify .

Developers
132209 developers on StackShare have stated that they use Docker .

Docker Integrations

Java , Kubernetes , Bitbucket , VirtualBox , and Docker Compose are some of the popular tools that integrate with Docker . Here's a list of all 413 tools that integrate with Docker .
Pros of Docker
824
Rapid integration and build up
690
Isolation
520
Open source
505
Testa­bil­i­ty and re­pro­ducibil­i­ty
459
Lightweight
217
Standardization
184
Scalable
105
Upgrading / down­grad­ing / ap­pli­ca­tion versions
87
Security
84
Private paas environments
33
Portability
25
Limit resource usage
16
Game changer
15
I love the way docker has changed virtualization
13
Fast
11
Concurrency
7
Docker's Compose tools
5
Easy setup
5
Fast and Portable
4
Because its fun
3
Makes shipping to production very simple
2
It's dope
2
Highly useful
1
HIgh Throughput
1
Very easy to setup integrate and build
1
Package the environment with the application
1
Does a nice job hogging memory
1
Open source and highly configurable
1
Simplicity, isolation, resource effective
1
MacOS support FAKE
1
Its cool
1
Docker hub for the FTW
1
Super
Decisions about Docker

Here are some stack decisions, common use cases and reviews by companies and developers who chose Docker in their tech stack.

Denys
Software engineer at Typeform · | 12 upvotes · 473.4K views
Shared insights
at
  • Go because it's easy and simple, facilitates collaboration , and also it's fast, scalable, powerful.
  • Visual Studio Code because it has one of the most sophisticated Go language support plugins.
  • Vim because it's Vim
  • Git because it's Git
  • Docker and Docker Compose because it's quick and easy to have reproducible builds/tests with them
  • Arch Linux because Docker for Mac/Win is a disaster for the human nervous system, and Arch is the coolest Linux distro so far
  • Stack Overflow because of Copy-Paste Driven Development
  • JavaScript and Python when a something needs to be coded for yesterday
  • PhpStorm because it saves me like 300 "Ctrl+F" key strokes a minute
  • cURL because terminal all the way
See more
Joshua Dean Küpper
CEO at Scrayos UG (haftungsbeschränkt) · | 1 upvote · 32.6K views

Docker is used as a key part of our new type of infrastructure that relies exclusively on containers. We prefer docker since it offers us all we need in a very stable and battle-proven manner.

See more
Shared insights

I have got a small radio service running on Node.js . Front end is written with React and packed with Webpack . I use Docker for my #DeploymentWorkflow along with Docker Swarm and GitLab CI on a single Google Compute Engine instance, which is also a runner itself. Pretty unscalable decision but it works great for tiny projects. The project is available on https://fridgefm.com

See more
Praveen Mooli
Engineering Manager at Taylor and Francis · | 18 upvotes · 2.7M views

We are in the process of building a modern content platform to deliver our content through various channels. We decided to go with Microservices architecture as we wanted scale. Microservice architecture style is an approach to developing an application as a suite of small independently deployable services built around specific business capabilities. You can gain modularity, extensive parallelism and cost-effective scaling by deploying services across many distributed servers. Microservices modularity facilitates independent updates/deployments, and helps to avoid single point of failure, which can help prevent large-scale outages. We also decided to use Event Driven Architecture pattern which is a popular distributed asynchronous architecture pattern used to produce highly scalable applications. The event-driven architecture is made up of highly decoupled, single-purpose event processing components that asynchronously receive and process events.

To build our #Backend capabilities we decided to use the following: 1. #Microservices - Java with Spring Boot , Node.js with ExpressJS and Python with Flask 2. #Eventsourcingframework - Amazon Kinesis , Amazon Kinesis Firehose , Amazon SNS , Amazon SQS , AWS Lambda 3. #Data - Amazon RDS , Amazon DynamoDB , Amazon S3 , MongoDB Atlas

To build #Webapps we decided to use Angular 2 with RxJS

#Devops - GitHub , Travis CI , Terraform , Docker , Serverless

See more

We are planning to choose Docker since it will allow us to build and install libraries and dependencies with ease. Its extensive use in the world will be helpful to provide us with useful discussion boards. This will be the first time any member of the dev team will be using Docker as part of their application. Given the limited readings, we have been able to do about it in the time we had, we a really excited to get to work with it. It seems to have a lot of potential that we would like to explore as a team. Another reason is that our dev team currently only has access to Windows machines and we want our application to be system agnostic. Using Docker will also help us limit the number of CI minutes our application requires.

See more
Joshua Dean Küpper
CEO at Scrayos UG (haftungsbeschränkt) · | 6 upvotes · 142.6K views

We use GraphQL for the communication between our Minecraft-Proxies/Load-Balancers and our global Minecraft-Orchestration-Service JCOverseer .

This connection proved to be especially challenging, as there were so many available options and very specific requirements and we tried our hardest to put as little complexity into this interface as possible.

Initially we considered designing our very own Netty based Packet-Protocol. While the performance of this approach probably would've been noteworthy, we would have had to write a lot of packets as the individual payloads would differ a lot and for the protocol specification a new project would've been needed, so we scrapped that idea.

Our second idea was to use a combination of Redis Key/Value store (in particular the ability to write whole, complex sets as the values of keys) for existing data, Redis Pub-Sub for the synchronization of new/changed/deleted data and a Vert.x based REST API for the mutation requests of the clients. While this would certainly have been possible, we decided against it, as redis offers no real other data types than strings and typing was important to us.

So we finally settled for GraphQL as it would allow us to define dynamic queries and mutations and additionally has subscriptions in store, so we would only need one component instead of three separate. The proxies register as subscribers to the server changes channel and fetch the current data set in advance. If they need to request changes, this is done through a mutation in GraphQL aswell.

The status of the invidiual servers is fetched through Docker healthchecks and a Docker client in the orchestration service, that subscribes to changed HEALTHINESS values in docker. If a service becomes unhealthy it is unregistered and synchronized through GraphQL . The healthcheck is comparable to a ping packet that expects a response in a given time frame.

See more

Blog Posts

Docker 's Features

  • Integrated developer tools
  • open, portable images
  • shareable, reusable apps
  • framework-aware builds
  • standardized templates
  • multi-environment support
  • remote registry management
  • simple setup for Docker and Kubernetes
  • certified Kubernetes
  • application templates
  • enterprise controls
  • secure software supply chain
  • industry-leading container runtime
  • image scanning
  • access controls
  • image signing
  • caching and mirroring
  • image lifecycle
  • policy-based image promotion

Docker Alternatives & Comparisons

What are some alternatives to Docker ?
LXC
LXC is a userspace interface for the Linux kernel containment features. Through a powerful API and simple tools, it lets Linux users easily create and manage system or application containers.
rkt
Rocket is a cli for running App Containers. The goal of rocket is to be composable, secure, and fast.
Kubernetes
Kubernetes is an open source orchestration system for Docker containers. It handles scheduling onto nodes in a compute cluster and actively manages workloads to ensure that their state matches the users declared intentions.
Cloud Foundry
Cloud Foundry is an open platform as a service (PaaS) that provides a choice of clouds, developer frameworks, and application services. Cloud Foundry makes it faster and easier to build, test, deploy, and scale applications.
Vagrant
Vagrant provides the framework and configuration format to create and manage complete portable development environments. These development environments can live on your computer or in the cloud, and are portable between Windows, Mac OS X, and Linux.
See all alternatives

Docker 's Followers
122392 developers follow Docker to keep up with related blogs and decisions.