Book Image

Docker for Serverless Applications

By : Chanwit Kaewkasi
Book Image

Docker for Serverless Applications

By: Chanwit Kaewkasi

Overview of this book

Serverless applications have gained a lot of popularity among developers and are currently the buzzwords in the tech market. Docker and serverless are two terms that go hand-in-hand. This book will start by explaining serverless and Function-as-a-Service (FaaS) concepts, and why they are important. Then, it will introduce the concepts of containerization and how Docker fits into the Serverless ideology. It will explore the architectures and components of three major Docker-based FaaS platforms, how to deploy and how to use their CLI. Then, this book will discuss how to set up and operate a production-grade Docker cluster. We will cover all concepts of FaaS frameworks with practical use cases, followed by deploying and orchestrating these serverless systems using Docker. Finally, we will also explore advanced topics and prototypes for FaaS architectures in the last chapter. By the end of this book, you will be in a position to build and deploy your own FaaS platform using Docker.
Table of Contents (15 chapters)
Title Page
Packt Upsell
Contributors
Preface
Index

Runtime for function containers


One of the most important components of the container ecosystem is the container runtime. During the early days of Docker, the runtime was LXC, then it changed to be the Docker-owned libcontainer. The libcontainer was later donated to OCI, the Open Container Initiative project under the Linux Foundation. Later, Project RunC was started. RunC is a command-line wrapper around libcontainer to enable developers to start containers from a Terminal. A developer could start a container by invoking the RunC binary and passing a root filesystem and a container specification to it.

RunC is an extremely stable piece of software. It has been with Docker since version 1.12 and is already used by millions of users. The docker run command actually sends its parameters to another daemon, containerd, which converts that information into a configuration file for RunC.

RunC makes the dependencies simpler as we need only a single binary, a root filesystem, and a configuration file...