Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Free Learning
Arrow right icon
Docker Cookbook
Docker Cookbook

Docker Cookbook: Over 100 practical and insightful recipes to build distributed applications with Docker , Second Edition

Arrow left icon
Profile Icon Cochrane Profile Icon K Khare Profile Icon Jeeva S. Chelladhurai
Arrow right icon
$27.98 $39.99
Full star icon Full star icon Full star icon Half star icon Empty star icon 3.5 (2 Ratings)
eBook Aug 2018 352 pages 2nd Edition
eBook
$27.98 $39.99
Paperback
$48.99
Subscription
Free Trial
Renews at $19.99p/m
Arrow left icon
Profile Icon Cochrane Profile Icon K Khare Profile Icon Jeeva S. Chelladhurai
Arrow right icon
$27.98 $39.99
Full star icon Full star icon Full star icon Half star icon Empty star icon 3.5 (2 Ratings)
eBook Aug 2018 352 pages 2nd Edition
eBook
$27.98 $39.99
Paperback
$48.99
Subscription
Free Trial
Renews at $19.99p/m
eBook
$27.98 $39.99
Paperback
$48.99
Subscription
Free Trial
Renews at $19.99p/m

What do you get with eBook?

Product feature icon Instant access to your Digital eBook purchase
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
Product feature icon AI Assistant (beta) to help accelerate your learning
OR
Modal Close icon
Payment Processing...
tick Completed

Billing Address

Table of content icon View table of contents Preview book icon Preview Book

Docker Cookbook

Working with Docker Containers

In this chapter, we will cover the following recipes:

  • Listing/searching for an image
  • Pulling an image
  • Listing images
  • Starting a container
  • Listing containers
  • Looking at the container logs
  • Stopping a container
  • Removing a container
  • Removing all stopped containers
  • Setting the restart policy on a container
  • Getting privileged access inside a container
  • Accessing the host device inside a container
  • Injecting a new process into a running container
  • Reading a container's metadata
  • Labeling and filtering containers
  • Reaping a zombie inside a container

Introduction

In the previous chapter, after installing Docker, we pulled an image and created a container from it. Docker's primary objective is running containers. In this chapter, we'll see the different operations we can perform with containers, such as starting, stopping, listing, deleting, and so on. This will help us use Docker for different use cases, such as testing, CI/CD, setting up PaaS, and so on, which we'll cover in later chapters. Before we start, let's verify the Docker installation by running the following command:

    $ docker version  

This will give the Docker client and server version, as well as other details.

I am using Ubuntu 18.04 as my primary environment in which to run these recipes. They should also work with the other environments.

Listing/searching for an image

We need an image to get the container started. Let's see how images are searched for on the Docker registry. As we have seen in Chapter 1, Introduction and Installation, a registry holds the Docker images, which can be both public and private. By default, the search happens on the default public registry, which is the Docker Hub and is located at https://hub.docker.com/.

Getting ready

Ensure that the Docker daemon is running on the host and can be connected through the Docker client.

How to do it...

The docker search command lets you...

Pulling an image

After searching for the image, we can pull it to the system by running the Docker daemon. Let's see how we can do that.

Getting ready

Ensure that the Docker daemon is running on the host and can be connected through the Docker client.

How to do it...

To pull an image from the Docker registry, you can either run the following:

    docker image pull [OPTIONS] NAME[:TAG|@DIGEST]

Or the legacy command:

    docker pull [OPTIONS] NAME[:TAG|@DIGEST]

The following is an example of pulling the ubuntu image:

    $ docker image pull ubuntu
...

Listing images

We can list the images that are available on the system by running the Docker daemon. These images might have been pulled from the registry, imported through the docker image pull command, or created through a Dockerfile.

Getting ready

Ensure that the Docker daemon is running on the host and can be connected through the Docker client.

How to do it...

Run either one of the following commands to list the images:

    $ docker image ls
    $ docker images

How it...

Starting a container

Once we have the images, we can use them to start containers. In this recipe, we will start a container with the ubuntu:latest image and see what happens behind the scenes.

Getting ready

Ensure that the Docker daemon is running on the host and can be connected through the Docker client.

How to do it...

We can start a container using either of the following syntaxes:

    docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
    docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]
The docker container run command is recommended over docker run because, in...

Listing containers

We can list both running and stopped containers.

Getting ready

Ensure that the Docker daemon is running on the host and can be connected through the Docker client. You will also need a few running and/or stopped containers.

How to do it...

To list the containers, either run the following command:

    docker container ls [OPTIONS]

Or run the following legacy command:

    docker ps [OPTIONS]

How it works...

...

Looking at the container logs

If the container emits logs or output on STDOUT/STDERR, then we can get them without logging into the container.

Getting ready

Ensure that the Docker daemon is running on the host and can be connected through the Docker client. You will also need a running container, that emits logs/output on STDOUT.

How to do it...

To get logs from the container, run the following command:

    docker container logs [OPTIONS] CONTAINER

Or run the following legacy command:

    docker logs [OPTIONS] CONTAINER

Let's take an example from the earlier section...

Stopping a container

We can stop one or more containers at once. In this recipe, we will first start a container and then stop it.

Getting ready

Ensure that the Docker daemon is running on the host and can be connected through the Docker client. You will also need one or more running containers.

How to do it...

To stop a container, run the following command:

    docker container stop [OPTIONS] CONTAINER [CONTAINER...]

Or run the following legacy command:

    docker stop [OPTIONS] CONTAINER [CONTAINER...]

If you already have running containers, then you can go ahead and...

Removing a container

We can remove a container permanently, but before that, we have to stop the container or use the force option. In this recipe, we'll create and remove a container.

Getting ready

Ensure that the Docker daemon is running on the host and can be connected through the Docker client. You will also need some containers in a stopped or running state to delete them.

How to do it...

Use the following command:

    $ docker container rm [OPTIONS] CONTAINER [CONTAINER]

Or run the following legacy command:

    $ docker rm [OPTIONS] CONTAINER [CONTAINER]

Let...

Removing all stopped containers

We can remove all stopped containers with a single command. In this recipe, we'll create a bunch of containers in a stopped state, and then delete all of them.

Getting ready

Ensure that Docker daemon 1.13 (and above) are running on the host and can be connected through the Docker client. You will also need some containers in a stopped or running state in order to delete them.

How to do it...

Use the following command:

    $ docker container prune [OPTIONS]

Let's first create a container, and then delete it using the following commands...

Setting the restart policy on a container

Before Docker 1.2, when a container exited for any reason or the Docker host was rebooted, the container had to be manually restarted using the restart command. With the release of Docker 1.2, a policy-based restart capability was added to the Docker engine to automate restarting containers. This feature is activated using the --restart option of the run command and it supports container restart at Docker host boot time, as well as when container failures occur.

Getting ready

Ensure that the Docker daemon is running on the host and can be connected through the Docker client.

How to do...

Getting privileged access inside a container

Linux divides privileges that are traditionally associated with superusers into distinct units, known as capabilities (run man capabilities on a Linux-based system), which can be independently enabled and disabled. For example, the net_bind_service capability allows nonuser processes to bind the port below 1,024. By default, Docker starts containers with limited capabilities. With privileged access inside the container, we allocate more capabilities to perform operations that are normally done by the root user. In order to have a better understanding of privileged mode, let's first try a simple mount on an unprivileged container and observe the effect:

Getting ready

Ensure...

Accessing the host device inside a container

From Docker 1.2 onwards, we can give access of the host device to a container with the --device option, following the run command. Earlier, you had to bind-mount it with the -v option, and that had to be done with the --privileged option.

Getting ready

Ensure that the Docker daemon is running on the host and can be connected through the Docker client. You will also need a device to pass the container to.

How to do it...

You can give access of a host device to the container using the following syntax:

    docker container run...

Injecting a new process into a running container

While doing development and debugging, we might want to look inside an already running container. There are a few utilities, such as nsenter (https://github.com/jpetazzo/nsenter), which allow us to enter the namespace of the container to inspect its state. With the exec option, which was added in Docker 1.3, we can inject a new process inside a running container.

Getting ready

Make sure that the Docker daemon is running on the host and that you can connect through the Docker client. You might also need a running container to inject a process into.

How to do it...

...

Reading a container's metadata

While doing debugging, automation, and so on, we will need the container's configuration details. Docker provides the container inspect command to get those easily.

Getting ready

Ensure that the Docker daemon is running on the host and can be connected through the Docker client.

How to do it...

To inspect a container, run the following command:

    $ docker container inspect [OPTIONS] CONTAINER [CONTAINER...]

We'll start a container and then inspect it, like so:

    $ ID=$(docker container run -d -i ubuntu /bin/bash)
    $...

Labeling and filtering containers

With Docker 1.6, a feature has been added so that we can label containers and images through which we can attach arbitrary key-value pairs as metadata. You can think of them as environment variables, that are not available for applications running inside containers, but they are available to Docker clients that manage the images and containers. Labels attached to images also get applied to containers that are started using those images. We can also attach labels to containers while starting them. Having labeled an image or a container, the labels can later be used for filtering or selection purposes.

For this recipe, let's assume that we have an image with the label com.example.image=docker-cookbook. We will see how to assign a label to an image in the next chapter:

As you can see from the preceding screenshot, if we use filters with the...

Reaping a zombie inside a container

On Linux (and all Unix-like) operating systems, when a process exits, all the resources associated with that process are released with the exception of its entry in the process table. This entry in the process table is kept until the parent process reads the entry to learn about the exit status of its child. This transient state of a process is called a zombie. As soon as the parent process reads the entry, the zombie process is removed from the process table, and this is called reaping. If the parent process exits before the child process, the init process (PID 1) adopts the child process (PID 1) and it eventually reaps adopted child processes when they exit:

In the preceding screenshot, we snipped the process tree for Ubuntu 14.04 on the left-hand side and Ubuntu 18.04 on the right-hand side. As we can see, both process trees have the init...

Left arrow icon Right arrow icon

Key benefits

  • Learn to manage containers efficiently with the help of real-world examples
  • Integrate orchestration tools such as Kubernetes for controlled deployments
  • Implement best practices for improving container efficiency and security

Description

Docker is an open source tool used for creating, deploying, and running applications using containers. With more than 100 self-contained tutorials, this book examines common pain points and best practices for developers building distributed applications with Docker. Each recipe in this book addresses a specific problem and offers a proven, best practice solution with insights into how it works, so that you can modify the code and configuration files to suit your needs. The Docker Cookbook begins by guiding you in setting up Docker in different environments and explains how to work with its containers and images. You’ll understand Docker orchestration, networking, security, and hosting platforms for effective collaboration and efficient deployment. The book also covers tips and tricks and new Docker features that support a range of other cloud offerings. By the end of this book, you’ll be able to package and deploy end-to-end distributed applications with Docker and be well-versed with best practice solutions for common development problems.

Who is this book for?

If you’re a developer, system administrator, or DevOps engineer looking to learn effective ways to build and manage distributed applications with Docker, this book is for you. You’ll need a basic understanding of Linux/Unix to understand the recipes covered.

What you will learn

  • Uncover the latest features of Docker 18.xx
  • Work with Docker images and containers
  • Explore container networking and data sharing
  • Get to grips with Docker APIs and language bindings
  • Understand the different PaaS solutions for Docker
  • Implement container orchestration using Docker Swarm and Kubernetes
  • Explore a variety of methods to debug and secure your Docker container

Product Details

Country selected
Publication date, Length, Edition, Language, ISBN-13
Publication date : Aug 31, 2018
Length: 352 pages
Edition : 2nd
Language : English
ISBN-13 : 9781788625982
Vendor :
Docker
Tools :

What do you get with eBook?

Product feature icon Instant access to your Digital eBook purchase
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
Product feature icon AI Assistant (beta) to help accelerate your learning
OR
Modal Close icon
Payment Processing...
tick Completed

Billing Address

Product Details

Publication date : Aug 31, 2018
Length: 352 pages
Edition : 2nd
Language : English
ISBN-13 : 9781788625982
Vendor :
Docker
Tools :

Packt Subscriptions

See our plans and pricing
Modal Close icon
$19.99 billed monthly
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Simple pricing, no contract
$199.99 billed annually
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just $5 each
Feature tick icon Exclusive print discounts
$279.99 billed in 18 months
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just $5 each
Feature tick icon Exclusive print discounts

Frequently bought together


Stars icon
Total $ 136.97
Mastering Docker
$54.99
Docker Cookbook
$48.99
Docker Quick Start Guide
$32.99
Total $ 136.97 Stars icon
Banner background image

Table of Contents

12 Chapters
Introduction and Installation Chevron down icon Chevron up icon
Working with Docker Containers Chevron down icon Chevron up icon
Working with Docker Images Chevron down icon Chevron up icon
Network and Data Management for Containers Chevron down icon Chevron up icon
Docker Use Cases Chevron down icon Chevron up icon
Docker APIs and SDKs Chevron down icon Chevron up icon
Docker Performance Chevron down icon Chevron up icon
Docker Orchestration and Hosting a Platform Chevron down icon Chevron up icon
Docker Security Chevron down icon Chevron up icon
Getting Help and Tips and Tricks Chevron down icon Chevron up icon
Docker on the Cloud Chevron down icon Chevron up icon
Other Books You May Enjoy Chevron down icon Chevron up icon

Customer reviews

Rating distribution
Full star icon Full star icon Full star icon Half star icon Empty star icon 3.5
(2 Ratings)
5 star 50%
4 star 0%
3 star 0%
2 star 50%
1 star 0%
John Costa Feb 08, 2019
Full star icon Full star icon Full star icon Full star icon Full star icon 5
I found the approach of the book to be pragmatic and helpful. It walked through the concepts presented in the beginning of the book and tied them together in well defined examples later in the book. It was a bonus to see the CI/CD and Orchestration examples as well.While there's not much information on how Docker runs on Window's under the hood - I didn't find that too distracting as the point of a docker container is to be system agnostic.Overall, I'd recommend this book, especially to those within minimal or no exposure to Docker at all.
Amazon Verified review Amazon
Esa Oct 13, 2023
Full star icon Full star icon Empty star icon Empty star icon Empty star icon 2
I see you have no e-book download option for this "free" book. I was hoping I could read it on my e-reader. In this online web-based format I have no use for it.
Subscriber review Packt
Get free access to Packt library with over 7500+ books and video courses for 7 days!
Start Free Trial

FAQs

How do I buy and download an eBook? Chevron down icon Chevron up icon

Where there is an eBook version of a title available, you can buy it from the book details for that title. Add either the standalone eBook or the eBook and print book bundle to your shopping cart. Your eBook will show in your cart as a product on its own. After completing checkout and payment in the normal way, you will receive your receipt on the screen containing a link to a personalised PDF download file. This link will remain active for 30 days. You can download backup copies of the file by logging in to your account at any time.

If you already have Adobe reader installed, then clicking on the link will download and open the PDF file directly. If you don't, then save the PDF file on your machine and download the Reader to view it.

Please Note: Packt eBooks are non-returnable and non-refundable.

Packt eBook and Licensing When you buy an eBook from Packt Publishing, completing your purchase means you accept the terms of our licence agreement. Please read the full text of the agreement. In it we have tried to balance the need for the ebook to be usable for you the reader with our needs to protect the rights of us as Publishers and of our authors. In summary, the agreement says:

  • You may make copies of your eBook for your own use onto any machine
  • You may not pass copies of the eBook on to anyone else
How can I make a purchase on your website? Chevron down icon Chevron up icon

If you want to purchase a video course, eBook or Bundle (Print+eBook) please follow below steps:

  1. Register on our website using your email address and the password.
  2. Search for the title by name or ISBN using the search option.
  3. Select the title you want to purchase.
  4. Choose the format you wish to purchase the title in; if you order the Print Book, you get a free eBook copy of the same title. 
  5. Proceed with the checkout process (payment to be made using Credit Card, Debit Cart, or PayPal)
Where can I access support around an eBook? Chevron down icon Chevron up icon
  • If you experience a problem with using or installing Adobe Reader, the contact Adobe directly.
  • To view the errata for the book, see www.packtpub.com/support and view the pages for the title you have.
  • To view your account details or to download a new copy of the book go to www.packtpub.com/account
  • To contact us directly if a problem is not resolved, use www.packtpub.com/contact-us
What eBook formats do Packt support? Chevron down icon Chevron up icon

Our eBooks are currently available in a variety of formats such as PDF and ePubs. In the future, this may well change with trends and development in technology, but please note that our PDFs are not Adobe eBook Reader format, which has greater restrictions on security.

You will need to use Adobe Reader v9 or later in order to read Packt's PDF eBooks.

What are the benefits of eBooks? Chevron down icon Chevron up icon
  • You can get the information you need immediately
  • You can easily take them with you on a laptop
  • You can download them an unlimited number of times
  • You can print them out
  • They are copy-paste enabled
  • They are searchable
  • There is no password protection
  • They are lower price than print
  • They save resources and space
What is an eBook? Chevron down icon Chevron up icon

Packt eBooks are a complete electronic version of the print edition, available in PDF and ePub formats. Every piece of content down to the page numbering is the same. Because we save the costs of printing and shipping the book to you, we are able to offer eBooks at a lower cost than print editions.

When you have purchased an eBook, simply login to your account and click on the link in Your Download Area. We recommend you saving the file to your hard drive before opening it.

For optimal viewing of our eBooks, we recommend you download and install the free Adobe Reader version 9.