1.

Record Nr.

UNINA9910522986403321

Autore

Bhat Sathyajith

Titolo

Practical Docker with Python : build, release, and distribute your Python app with Docker / / Sathyajith Bhat

Pubbl/distr/stampa

New York, New York : , : Apress, , [2022]

ISBN

1-4842-7815-1

Edizione

[Second edition]

Descrizione fisica

1 online resource (239 pages)

Disciplina

005.1

Soggetti

Application software - Development

Python (Computer program language)

Lingua di pubblicazione

Inglese

Formato

Materiale a stampa

Livello bibliografico

Monografia

Note generali

Includes index.

Nota di contenuto

Intro -- Table of Contents -- About the Author -- About the Technical Reviewer -- Acknowledgments -- Introduction -- Chapter 1: Introduction to Containerization -- What Is Docker? -- Understanding Problems that Docker Solves -- Containerization Through the Years -- 1979: chroot -- 2000: FreeBSD Jails -- 2005: OpenVZ -- 2006: cgroups -- 2008: LXC -- Containers and Virtual Machines -- Container Runtimes -- OCI and CRI -- Docker and Kubernetes -- Summary -- Chapter 2: Docker 101 -- Installing Docker -- Installing Docker on Windows -- Installing Docker on Windows Using WSL2 Backend -- About WSL -- Requirements for Installing and Enabling WSL2 -- Installing on macOS -- Installing on Linux -- Additional Steps -- Understanding Jargon Around Docker -- Layers -- Docker Image -- Docker Tags -- Docker Container -- Bind Mounts and Volumes -- Docker Repository -- Docker Registry -- Dockerfile -- Docker Engine -- Docker Daemon -- Docker CLI -- Docker API -- Docker Compose -- Docker Machine -- Hands-on Docker -- Working with Docker Images -- Working with a Real-World Docker Image -- Summary -- Chapter 3: Building the  Python App -- About the Project -- Setting Up Telegram Messenger -- BotFather: Telegram's Bot Creation Interface -- Creating the Bot with BotFather -- Newsbot: The Python App -- Getting Started with Newsbot -- Running Newsbot -- Sending Messages to Newsbot -- Summary -- Chapter 4: Understanding the Dockerfile -- Dockerfile Primer -- Build Context -- Dockerignore -- BuildKit -- Building Using



Docker Build -- Tags -- Dockerfile Instructions -- FROM -- WORKDIR -- ADD and COPY -- RUN -- Layer Caching -- CMD and ENTRYPOINT -- ENV -- VOLUME -- EXPOSE -- LABEL -- Guidelines and Recommendations for Writing Dockerfiles -- Using Multi-Stage Builds -- Exercises -- Summary -- Chapter 5: Understanding Docker Volumes -- Data Persistence.

Example of Data Loss Within a Docker Container -- tmpfs Mounts -- Bind Mounts -- Docker Volumes -- Docker Volume Subcommands -- Volume Create -- Volume Inspect -- List Volumes -- Prune Volumes -- Remove Volumes -- Using Volumes When Starting a Container -- The VOLUME Instruction in Dockerfiles -- Exercises -- Summary -- Chapter 6: Understanding Docker Networks -- Why Do We Need Container Networking? -- Default Docker Network Drivers -- Bridge Networks -- Host Networks -- Overlay Networks -- Macvlan Networks -- None Networking -- Working with Docker Networks -- Bridge Networks -- Creating Named Bridge Networks -- Connecting Containers to Named Bridge Networks -- Host Networks -- Exercises -- Summary -- Chapter 7: Understanding Docker Compose -- Overview of Docker Compose -- Installing Docker Compose -- Docker Compose Basics -- Docker Compose Version Overview -- Compose File Versioning and the Compose Spec -- Version 1 -- Version 2 -- Version 3 -- Compose Specification -- Docker Compose File Reference -- Services Key -- Build Key -- Context Key -- Image Key -- environment/env_file Key -- depends_on Key -- Image Key -- ports Key -- Volumes Key -- Restart Key -- Docker Compose CLI Reference -- The build Subcommand -- The down Subcommand -- The exec Subcommand -- The logs Subcommand -- The stop subcommand -- Exercises -- Summary -- Chapter 8: Preparing for Production Deployments -- Continuous Integration (CI) -- GitHub Actions -- Container Orchestration -- The Need for Orchestrators -- How Do Orchestrators Work? -- Popular Orchestrators -- Kubernetes -- Kubernetes Control Plane -- Kubernetes Worker Plane -- A Look at kind -- Creating Kubernetes Clusters Using kind -- Running a Sample Service in Kubernetes -- Pods and Deployments -- Exercises -- Summary -- Index.

Sommario/riassunto

Learn the fundamentals of containerization and get acquainted with Docker. This second edition builds upon the foundation of the first book by revising all the chapters, updating the commands, code, and examples to meet the changes in Docker. It also introduces a new chapter on setting up your application for production deployment and breaks down terminologies like Dockerfile and Docker volumes while taking you on a guided tour of building a telegram bot using Python. You'll start with a brief history of how containerization has changed over the years. Next, we look at how to install (including using the new WSL2 mode) and get started with Docker. The next couple of chapters will focus on understanding the Dockerfile, including the structure and the core instructions used in building a Docker image. You'll also see how to distribute Docker images using Docker hub and other private registries. From there, you'll look at using Docker volumes for persisting data. Then learn how to run multi-container applications with Docker compose and learn inter-container networking works with Docker networks. Finally, you'll look at how to prepare a containerized application for production deployments. Throughout the book you'll apply the techniques learned through the chapters by building a Telegram messenger Chatbot and see how much easier Docker makes it possible to build, release, contribute and distribute an application. In addition, the book shows how optimize the Docker images for production servers by using multi-stage builds and improve the



reliability of your services by using health checks and restart policies. Practical Docker with Python will break down terminologies like Dockerfile and Docker volumes, and take you on a guided tour of building a telegram bot using Python. What You'll Learn Compare the difference between containerization and virtualization Understand the Dockerfile and converting your application to Docker image Define and run multi-container applications with Docker compose Review data persistency with Docker volumes Who This Book Is For Beginner and intermediate developers, DevOps practitioners who are looking improving their build and release workflow by containerizing applications as well as system administrators learning to implement DevOps principles.