Containers
Docker is a computer program that performs operating-system-level virtualization, also known as "containerization". It was first released in 2013 and is developed by Docker, Inc.
Docker is used to run software packages called "containers". Containers are isolated from each other and bundle their own tools, libraries and configuration files; they can communicate with each other through well-defined channels. All containers are run by a single operating system kernel and are thus more lightweight than virtual machines. Containers are created from "images" that specify their precise contents. Images are often created by combining and modifying standard images downloaded from public repositories.
Position on the Adoption Curve
Presentations about Containers
The Highs and Lows of Stateful Containers
Control Theory In Container Orchestration
Chaos Engineering with Containers
Getting Started With Kubernetes and Container Orchestration (Friday Section)
Introduction to Docker and Containers
Getting Started With Kubernetes and Container Orchestration (Thursday Section)
Interviews
The Highs and Lows of Stateful Containers
Tell me about the work that you do today.
I work on the open source CockroachDB database, the product itself, performance, stability of the core system, and then making sure it runs really well in all environments that users and customers want it. There are a lot of people trying to run it on Kubernetes, in a single cluster or across multiple regions. I've had a lot of exposure to trying to make a stateful system work in these various orchestrated container environments.
What's the big challenge when you're talking about stateful systems with an orchestrator?
Orchestrated systems don't provide all the same guarantees you'd expect when you're running something directly on your own VMs. A lot of the challenges are from not properly understanding how these systems work and what guarantees they’re providing that are a little different from what you might be used to in more traditional environments. You need to understand the environment and the system that you're running a little better than you'd have to run something directly out on bare metal.