Book Image

Docker High Performance. - Second Edition

By : Allan Espinosa, Russ McKendrick
Book Image

Docker High Performance. - Second Edition

By: Allan Espinosa, Russ McKendrick

Overview of this book

Docker is an enterprise-grade container platform that allows you to build and deploy your apps. Its portable format lets you run your code right from your desktop workstations to popular cloud computing providers. This comprehensive guide will improve your Docker work?ows and ensure your application's production environment runs smoothly. This book starts with a refresher on setting up and running Docker and details the basic setup for creating a Docker Swarm cluster. You will then learn how to automate this cluster by using the Chef server and cookbooks. After that, you will run the Docker monitoring system with Prometheus and Grafana, and deploy the ELK stack. You will also learn best practices for optimizing Docker images. After deploying containers with the help of Jenkins, you will then move on to a tutorial on using Apache JMeter to analyze your application's performance. You will learn how to use Docker Swarm and NGINX to load-balance your application, and how common debugging tools in Linux can be used to troubleshoot Docker containers. By the end of this book, you will be able to integrate all the optimizations that you have learned and put everything into practice in your applications.
Table of Contents (16 chapters)
Title Page
Copyright and Credits
About Packt
Contributors
Preface
Index

Index

A

  • Amazon EC2 Container Service
    • reference / Alternative methods
  • Ansible
    • reference / Alternative methods
  • Apache Bench
    • reference / Other benchmarking tools
  • Apache HTTP Server
    • reference / Other load balancers
  • Apache JMeter
    • setting up / Setting up Apache JMeter
    • reference / Setting up Apache JMeter
    • sample application, deploying / Deploying a sample application
    • installing / Installing JMeter
    • download link / Installing JMeter
    • throughput, calculating / Calculating throughput
    • response time, plotting / Plotting response time
  • application backends
    • preparing / Preparing application backends
  • applications
    • preparing, for container deployment / Preparing our application
    • deploying / Deploying applications
    • scaling / Scaling applications
  • apt-cacher-ng
    • reference / Using caching proxies
  • Azure Container Instances
    • reference / Alternative methods

B

  • benchmark
    • tuning / Tuning the benchmark
    • concurrency, increasing / Increasing concurrency
    • distributed tests, executing / Running distributed tests
  • benchmark results
    • analyzing / Analyzing benchmark results
    • Apache JMeter, result viewing / Viewing the results of JMeter runs
    • performance, observing in Grafana / Observing performance in Grafana and Kibana
    • performance, observing in Kibana / Observing performance in Grafana and Kibana
  • benchmark tools / Other benchmarking tools
  • benchmark workload
    • building / Building a benchmark workload
    • test plan, creating in JMeter / Creating a test plan in JMeter
  • block devices
    • observing / Observing block devices
  • build context size
    • reducing / Reducing the build context size

C

  • caching proxies
    • using / Using caching proxies
  • cAdvisor / Exposing Prometheus's metrics
  • Certificate Authority (CA)
    • setting up / Setting up a certificate authority
  • CFEngine
    • reference / Alternative methods
  • Chef
    • using / Using Chef
    • reference / Using Chef
    • workstation, setting up / Setting up our workstation
  • Chef Development Kit
    • download link / Setting up our workstation
  • Chef environment
    • about / Using Chef
    • Bootstrap nodes / Bootstrap nodes
  • Chef recipes
    • about / Using Chef
    • writing / Writing Chef recipes
  • Chef server
    • signing up for / Signing up for a Chef server
  • Chef Supermarket
    • reference / Configuring the Docker host
  • CNCF Kubernetes
    • reference / Alternative methods
  • Common Log Format (CLF) / Observing performance in Grafana and Kibana
  • configuration management
    • significance / Importance of configuration management
  • container
    • building / Building and deploying a container
    • deploying / Building and deploying a container
    • inspecting, with docker exec command / Inspecting containers with the docker exec command
    • debugging tools / Other container debugging tools
  • CoreOS toolbox program / Other container debugging tools

D

  • Datadog
    • reference / Other monitoring and logging solutions
  • deployment time
    • reducing / Reducing deployment time
  • Docker
    • web applications, supporting / Supporting web applications with Docker
  • Docker applications
    • scaling out / Scaling out our Docker applications
    • deploying, with zero downtime / Deploying with zero downtime
  • Docker container logs
    • forwarding / Forwarding Docker container logs
  • Docker credentials
    • setting up, within Jenkins / Setting up our Docker credentials within Jenkins
  • Docker Engine / Exposing Prometheus's metrics
  • docker exec command
    • containers, inspecting / Inspecting containers with the docker exec command
    • reference / Inspecting containers with the docker exec command
  • Docker host
    • preparing / Preparing a Docker host
    • configuring / Configuring the Docker host
  • Docker image size
    • reducing / Reducing Docker image size
    • commands, chaining / Chaining commands
    • build and deployment images, separating / Separating build and deployment images
  • Docker machine
    • reference / Alternative methods
  • Docker Swarm
    • reference / Building a Docker Swarm cluster
    • initializing / Initializing Docker Swarm
  • Docker Swarm cluster
    • building / Building a Docker Swarm cluster

E

  • Elastic Cloud
    • reference / Other monitoring and logging solutions
  • Elasticsearch / Consolidating logs in an ELK stack
  • ELK stack
    • building / Deploying Elasticsearch, Logstash, and Kibana

F

  • Fluentd
    • reference / Other monitoring and logging solutions

G

  • Google Kubernetes Engine
    • reference / Alternative methods
  • Grafana / Collecting metrics with Prometheus
  • Graphite
    • reference / Other monitoring and logging solutions
  • Graylog
    • reference / Other monitoring and logging solutions

H

  • HAProxy
    • reference / Other load balancers
  • HP Lab's Httperf
    • reference / Other benchmarking tools
  • Hudson / Deploying and configuring Jenkins

I

  • image build time
    • improving / Improving image build time
    • registry mirrors, using / Using registry mirrors
    • image layers, reusing / Reusing image layers
    • build context size, reducing / Reducing the build context size
    • caching proxies, using / Using caching proxies
  • image layers
    • reusing / Reusing image layers
    • reference / Reusing image layers
  • InfluxDB
    • reference / Other monitoring and logging solutions

J

  • Java Runtime Environment (JRE) / Installing JMeter
  • Jenkins
    • deploying / Deploying and configuring Jenkins
    • configuring / Deploying and configuring Jenkins
    • Docker credentials, setting up within / Setting up our Docker credentials within Jenkins
  • Jenkins configuration
    • completing / Finishing the Jenkins Configuration
  • Jenkins container
    • deploying / Deploying the Jenkins container
  • Jenkins job
    • creating / Creating a Jenkins job
  • Joyent Triton Compute
    • reference / Alternative methods

K

  • Kibana / Consolidating logs in an ELK stack

L

  • Librato
    • reference / Other monitoring and logging solutions
  • load balancing
    • with NGINX / Balancing load with NGINX
  • logging
    • solutions / Other monitoring and logging solutions
  • logs
    • consolidating, in ELK stack / Consolidating logs in an ELK stack
  • Logstash / Consolidating logs in an ELK stack

M

  • Mesophere Marathon
    • reference / Alternative methods
  • metrics
    • collecting, with Prometheus / Collecting metrics with Prometheus
  • monitoring
    • significance / The importance of monitoring
    • solutions / Other monitoring and logging solutions

N

  • network packets
    • analyzing / Analyzing network packets
  • New Relic
    • reference / Other monitoring and logging solutions
  • NGINX
    • deploying, to Docker swarm cluster / Balancing load with NGINX

P

  • pipeline
    • running / Running the Pipeline
  • Polipo
    • reference / Using caching proxies
  • Prometheus
    • metrics, collecting / Collecting metrics with Prometheus
    • metrics, exposing / Exposing Prometheus's metrics
    • metrics, scraping / Scraping and visualizing metrics
    • metrics, visualizing / Scraping and visualizing metrics
  • Prometheus clients/exporters / Collecting metrics with Prometheus
  • Public Key Infrastructure (PKI) / Setting up a certificate authority
  • Puppet
    • reference / Alternative methods
  • Push Chef Policies / Push Chef policies

R

  • recipes / Using Chef
  • registry mirrors
    • using / Using registry mirrors
    • reference / Using registry mirrors
  • remote access, enabling to Docker host
    • about / Enabling remote access
    • certificate authority, setting up / Setting up a certificate authority
    • Docker Engine, reconfiguring to enable remote access / Enabling remote access in Docker Engine
    • remote connection, from Docker client / Connecting remotely from the Docker client
  • resource / Using Chef
  • rhel-tools / Other container debugging tools

S

  • SaltStack
    • reference / Alternative methods
  • Sensu
    • reference / Other monitoring and logging solutions
  • Siege
    • reference / Other benchmarking tools
  • SmartDataCenter Docker Engine
    • reference / Alternative methods
  • Sonatype Nexus
    • reference link / Using caching proxies
  • Splunk
    • reference / Other monitoring and logging solutions
  • Splunk Cloud
    • reference / Other monitoring and logging solutions
  • Squid
    • reference link / Using caching proxies
  • strace web page
    • reference / Tracing system calls
  • system calls
    • tracing / Tracing system calls

T

  • tcpdump packet dumper and analyzer
    • reference / Analyzing network packets
  • Traefik
    • reference / Other load balancers
  • Treasure Data
    • reference / Other monitoring and logging solutions

W

  • web applications
    • supporting, with Docker / Supporting web applications with Docker
  • web operations
    • performing / Performing web operations