Containers in the cloud
Containers are ideal to package microservices because, while providing isolation to the microservice, they are very lightweight and you don't incur a lot of overhead when deploying many microservices as you do with virtual machines. That makes containers ideal for cloud deployment, where allocating a whole virtual machine for each microservice would be cost prohibitive. All major cloud providers, such as AWS, GCE, and Azure, provide container hosting services these days. Some of them, such as Google's GKE, are based on Kubernetes. Others, such as Microsoft Azure's container service, are based on other solutions (Apache Mesos). By the way, AWS has the ECS (the containers service over EC2) which uses their own orchestration solution. The great thing about Kubernetes is that it can be deployed on all those clouds. Kubernetes has a cloud provider interface that allows any cloud provider to implement it and integrate Kubernetes seamlessly.
What's the difference between docker compose and kubernetes?
While diving into Docker, Google Cloud and Kubernetes, and without clearly understanding all three of them yet, it seems to me these products are overlapping, yet they're not compatible.
For example, a docker-compose file, needs to be re-written so an app can be deployed to Kubernetes.
Could someone provide a high level rough description of where Docker, Docker-Compose, Docker Cloud, and Kubernetes overlap and where one is dependent on the other?
BEST ANSWER:
Docker:
Docker is the container technology that allows you to containerize your applications. Docker is the core for using the other technologies.
Docker Compose:
Allows configuring and starting multiple docker containers. This is mostly used as a helper when you want to start multiple docker containers and don't want to start each one separately using docker run ....
Docker compose is used for starting containers on the same host.
Docker Swarm:
Docker swarm is for running and connecting containers on multiple hosts. Docker swarm is a container cluster management and orchestration tool. It manages containers running on multiple hosts and does things like scaling, starting a new container when one crashes, networking containers ...
Docker swarm is docker in production. It is the native docker orchestration tool that is embedded in the Docker Engine.
The docker swarm file named stack file is very similar to a docker compose file.
Kubernetes:
A container orchestration tool developed by Google. Kubernetes goal is very similar as that for Docker swarm.
Docker Cloud:
A paid enterprise docker service that allows you to build and run containers on cloud servers or local servers. It provides a Web UI and a central control panel to run and manage containers while providing all the docker features in a user friendly Web interface.
Update:
Docker cloud "partially" discontinued
The services on Docker Cloud that provide application, node, and swarm cluster management will be shutting down on May 21... automated builds and registry storage services, will not be affected and will continue to be available
You have survived every single bad day so far
Unknown