Book Image

Native Docker Clustering with Swarm

By : Fabrizio Soppelsa, Chanwit Kaewkasi
Book Image

Native Docker Clustering with Swarm

By: Fabrizio Soppelsa, Chanwit Kaewkasi

Overview of this book

Docker Swarm serves as one of the crucial components of the Docker ecosystem and offers a native solution for you to orchestrate containers. It’s turning out to be one of the preferred choices for Docker clustering thanks to its recent improvements. This book covers Swarm, Swarm Mode, and SwarmKit. It gives you a guided tour on how Swarm works and how to work with Swarm. It describes how to set up local test installations and then moves to huge distributed infrastructures. You will be shown how Swarm works internally, what’s new in Swarmkit, how to automate big Swarm deployments, and how to configure and operate a Swarm cluster on the public and private cloud. This book will teach you how to meet the challenge of deploying massive production-ready applications and a huge number of containers on Swarm. You'll also cover advanced topics that include volumes, scheduling, a Libnetwork deep dive, security, and platform scalability.
Table of Contents (18 chapters)
Native Docker Clustering with Swarm
Credits
About the Authors
About the Reviewer
www.PacktPub.com
Dedication
Preface

Libkv


libkv is a unified library to interact with different key-value store backends. libkv was originally part of Docker Swarm v1 in the very first versions of the development. Later, all code related to key-value store discovery services was refactored and moved to www.github.com/docker/libkv.

libkv allows you to execute CRUD operations and also to watch key-value entries from different backends, so we can use the same code to work with all HA distributed key-value stores, which are Consul, Etcd, and ZooKeeper as shown in the following figure. At the time of writing, libkv also supports a local store implemented using BoltDB.

How to use libkv

To start with libkv, we need to understand how to call its APIs first. Here's the libkv Store interface in Go, for every store implementation:

type Store interface {
   Put(key string, value []byte, options *WriteOptions) error
   Get(key string) (*KVPair, error)
   Delete(key string) error
   Exists(key string) (bool, error)
   Watch(key string, stopCh...