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
Learning Docker
Learning Docker

Learning Docker: Optimize the power of Docker to run your applications quickly and easily

Arrow left icon
Profile Icon Pethuru Raj Profile Icon Jeeva S. Chelladhurai Profile Icon Vinod Singh Profile Icon Jeeva Chelladhurai Profile Icon Vinod kumar Singh Profile Icon Pethuru Raj Chelliah +2 more Show less
Arrow right icon
S$41.98 S$59.99
Full star icon Full star icon Full star icon Half star icon Empty star icon 3.8 (5 Ratings)
eBook Jun 2015 240 pages 1st Edition
eBook
S$41.98 S$59.99
Paperback
S$74.99
Subscription
Free Trial
Arrow left icon
Profile Icon Pethuru Raj Profile Icon Jeeva S. Chelladhurai Profile Icon Vinod Singh Profile Icon Jeeva Chelladhurai Profile Icon Vinod kumar Singh Profile Icon Pethuru Raj Chelliah +2 more Show less
Arrow right icon
S$41.98 S$59.99
Full star icon Full star icon Full star icon Half star icon Empty star icon 3.8 (5 Ratings)
eBook Jun 2015 240 pages 1st Edition
eBook
S$41.98 S$59.99
Paperback
S$74.99
Subscription
Free Trial
eBook
S$41.98 S$59.99
Paperback
S$74.99
Subscription
Free Trial

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
OR
Modal Close icon
Payment Processing...
tick Completed

Billing Address

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

Learning Docker

Chapter 1. Getting Started with Docker

These days, Docker technology is gaining more market and more mind shares among information technology (IT) professionals across the globe. In this chapter, we would like to shed more light on Docker, and show why it is being touted as the next best thing for the impending cloud IT era. In order to make this book relevant to software engineers, we have listed the steps needed for crafting highly usable application-aware containers, registering them in a public registry repository, and then deploying them in multiple IT environments (on-premises as well as off-premises). In this book, we have clearly explained the prerequisites and the most important details of Docker, with the help of all the education and experiences that we could gain through a series of careful implementations of several useful Docker containers in different systems. For doing this, we used our own laptops as well as a few leading public Cloud Service Providers (CSP).

We would like to introduce you to the practical side of Docker for the game-changing Docker-inspired containerization movement.

In this chapter, we will cover the following topics:

  • An introduction to Docker
  • Docker on Linux
  • Differentiating between containerization and virtualization
  • Installing the Docker engine
  • Understanding the Docker setup
  • Downloading the first image
  • Running the first container
  • Running a Docker container on Amazon Web Services (AWS)
  • Troubleshooting the Docker containers

An introduction to Docker

Due to its overwhelming usage across industry verticals, the IT domain has been stuffed with many new and pathbreaking technologies used not only for bringing in more decisive automation but also for overcoming existing complexities. Virtualization has set the goal of bringing forth IT infrastructure optimization and portability. However, virtualization technology has serious drawbacks, such as performance degradation due to the heavyweight nature of virtual machines (VM), the lack of application portability, slowness in provisioning of IT resources, and so on. Therefore, the IT industry has been steadily embarking on a Docker-inspired containerization journey. The Docker initiative has been specifically designed for making the containerization paradigm easier to grasp and use. Docker enables the containerization process to be accomplished in a risk-free and accelerated fashion.

Precisely speaking, Docker is an open source containerization engine, which automates the packaging, shipping, and deployment of any software applications that are presented as lightweight, portable, and self-sufficient containers, that will run virtually anywhere.

A Docker container is a software bucket comprising everything necessary to run the software independently. There can be multiple Docker containers in a single machine and containers are completely isolated from one another as well as from the host machine.

In other words, a Docker container includes a software component along with all of its dependencies (binaries, libraries, configuration files, scripts, jars, and so on). Therefore, the Docker containers could be fluently run on x64 Linux kernel supporting namespaces, control groups, and file systems, such as Another Union File System (AUFS). However, as indicated in this chapter, there are pragmatic workarounds for running Docker on other mainstream operating systems, such as Windows, Mac, and so on. The Docker container has its own process space and network interface. It can also run things as root, and have its own /sbin/init, which can be different from the host machines'.

In a nutshell, the Docker solution lets us quickly assemble composite, enterprise-scale, and business-critical applications. For doing this, we can use different and distributed software components: Containers eliminate the friction that comes with shipping code to distant locations. Docker also lets us test the code and then deploy it in production as fast as possible. The Docker solution primarily consists of the following components:

  • The Docker engine
  • The Docker Hub

The Docker engine is for enabling the realization of purpose-specific as well as generic Docker containers. The Docker Hub is a fast-growing repository of the Docker images that can be combined in different ways for producing publicly findable, network-accessible, and widely usable containers.

Docker on Linux

Suppose that we want to directly run the containers on a Linux machine. The Docker engine produces, monitors, and manages multiple containers as illustrated in the following diagram:

Docker on Linux

The preceding diagram vividly illustrates how future IT systems would have hundreds of application-aware containers, which would innately be capable of facilitating their seamless integration and orchestration for deriving modular applications (business, social, mobile, analytical, and embedded solutions). These contained applications could fluently run on converged, federated, virtualized, shared, dedicated, and automated infrastructures.

Differentiating between containerization and virtualization

It is pertinent, and paramount to extract and expound the game-changing advantages of the Docker-inspired containerization movement over the widely used and fully matured virtualization paradigm. In the containerization paradigm, strategically sound optimizations have been accomplished through a few crucial and well-defined rationalizations and the insightful sharing of the compute resources. Some of the innate and hitherto underutilized capabilities of the Linux kernel have been rediscovered. These capabilities have been rewarded for bringing in much-wanted automation and acceleration, which will enable the fledgling containerization idea to reach greater heights in the days ahead, especially those of the cloud era. The noteworthy business and technical advantages of these include the bare metal-scale performance, real-time scalability, higher availability, and so on. All the unwanted bulges and flab are being sagaciously eliminated to speed up the roll-out of hundreds of application containers in seconds and to reduce the time taken for marketing and valuing in a cost-effective fashion. The following diagram on the left-hand side depicts the virtualization aspect, whereas the diagram on the right-hand side vividly illustrates the simplifications that are being achieved in the containers:

Differentiating between containerization and virtualization

The following table gives a direct comparison between virtual machines and containers:

Virtual Machines (VMs)

Containers

Represents hardware-level virtualization

Represents operating system virtualization

Heavyweight

Lightweight

Slow provisioning

Real-time provisioning and scalability

Limited performance

Native performance

Fully isolated and hence more secure

Process-level isolation and hence less secure

The convergence of containerization and virtualization

A hybrid model, having features from both the virtual machines and that of containers, is being developed. It is the emergence of system containers, as illustrated in the preceding right-hand-side diagram. Traditional hypervisors, which implicitly represent hardware virtualization, directly secure the environment with the help of the server hardware. That is, VMs are completely isolated from the other VMs as well as from the underlying system. But for containers, this isolation happens at the process level and hence, they are liable for any kind of security incursion. Furthermore, some vital features that are available in the VMs are not available in the containers. For instance, there is no support for SSH, TTY, and the other security functionalities in the containers. On the other hand, VMs are resource-hungry and hence, their performance gets substantially degraded. Indeed, in containerization parlance, the overhead of a classic hypervisor and a guest operating system will be eliminated to achieve bare metal performance. Therefore, a few VMs can be provisioned and made available to work on a single machine. Thus, on one hand, we have the fully isolated VMs with average performance and on the other side, we have the containers that lack some of the key features, but are blessed with high performance. Having understood the ensuing needs, product vendors are working on system containers. The objective of this new initiative is to provide full system containers with the performance that you would expect from bare metal servers, but with the experience of virtual machines. The system containers in the preceding right-hand-side diagram represent the convergence of two important concepts (virtualization and containerization) for smarter IT. We will hear and read more about this blending in the future.

Containerization technologies

Having recognized the role and the relevance of the containerization paradigm for IT infrastructure augmentation and acceleration, a few technologies that leverage the unique and decisive impacts of the containerization idea have come into existence and they have been enumerated as follows:

  • LXC (Linux Containers): This is the father of all kinds of containers and it represents an operating-system-level virtualization environment for running multiple isolated Linux systems (containers) on a single Linux machine.

    The article LXC on the Wikipedia website states that:

    "The Linux kernel provides the cgroups functionality that allows limitation and prioritization of resources (CPU, memory, block I/O, network, etc.) without the need for starting any virtual machines, and namespace isolation functionality that allows complete isolation of an applications' view of the operating environment, including process trees, networking, user IDs and mounted file systems."

    You can get more information from http://en.wikipedia.org/wiki/LXC.

  • OpenVZ: This is an OS-level virtualization technology based on the Linux kernel and the operating system. OpenVZ allows a physical server to run multiple isolated operating system instances, called containers, virtual private servers (VPSs), or virtual environments (VEs).
  • The FreeBSD jail: This is a mechanism that implements an OS-level virtualization, which lets the administrators partition a FreeBSD-based computer system into several independent mini-systems called jails.
  • The AIX Workload partitions (WPARs): These are the software implementations of the OS-level virtualization technology, which provide application environment isolation and resource control.
  • Solaris Containers (including Solaris Zones): This is an implementation of the OS-level virtualization technology for the x86 and SPARC systems. A Solaris Container is a combination of the system resource controls and boundary separation provided by zones. Zones act as completely isolated virtual servers within a single operating system instance.

In this book, considering the surging popularity and the mass adoption happening to Docker, we have chosen to dig deeper, dwell in detail on the Docker platform, the one-stop solution for the simplified and streamlined containerization movement.

Installing the Docker engine

The Docker engine is built on top of the Linux kernel and it extensively leverages its features. Therefore, at this point in time, the Docker engine can only be directly run on Linux OS distributions. Nonetheless, the Docker engine could be run on the Mac and Microsoft Windows operating systems by using the lightweight Linux VMs with the help of adapters, such as Boot2Docker. Due to the surging growing of Docker, it is now being packaged by all major Linux distributions so that they can retain their loyal users as well as attract new users. You can install the Docker engine by using the corresponding packaging tool of the Linux distribution; for example, by using the apt-get command for Debian and Ubuntu, and the yum command for RedHat, Fedora, and CentOS.

Note

We have chosen the Ubuntu Trusty 14.04 (LTS) (64-bit) Linux distribution for all practical purposes.

Installing from the Ubuntu package repository

This section explains the steps involved in installing the Docker engine from the Ubuntu package repository in detail. At the time of writing this book, the Ubuntu repository had packaged Docker 1.0.1, whereas the latest version of Docker was 1.5. We strongly recommend installing Docker version 1.5 or greater by using any one of the methods described in the next section.

However, if for any reason you have to install the Ubuntu packaged version, then please follow the steps described here:

  1. The best practice for installing the Ubuntu packaged version is to begin the installation process by resynchronizing with the Ubuntu package repository. This step will essentially update the package repository to the latest published packages, thus we will ensure that we always get the latest published version by using the command shown here:
    $ sudo apt-get update
    

    Tip

    Downloading the example code

    You can download the example code files from your account at http://www.packtpub.com for all the Packt Publishing books you have purchased. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you.

  2. Kick-start the installation by using the following command. This setup will install the Docker engine along with a few more support files, and it will also start the docker service instantaneously:
    $ sudo apt-get install -y docker.io
    

    Note

    The Docker package is called docker.io because an older version of the Ubuntu package was called docker. As a result, all the files with the name docker are installed as docker.io.

    Examples are /usr/bin/docker.io and /etc/bash_completion.d/docker.io.

  3. For your convenience, you can create a soft link for docker.io called docker. This will enable you to execute Docker commands as docker instead of docker.io. You can do this by using the following command:
    $ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker
    

    Note

    The official Ubuntu package does not come with the latest stable version of docker.

Installing the latest Docker using docker.io script

The official distributions might not package the latest version of Docker. In such a case, you can install the latest version of Docker either manually or by using the automated scripts provided by the Docker community.

For installing the latest version of Docker manually, follow these steps:

  1. Add the Docker release tool's repository path to your APT sources, as shown here:
    $ sudo sh -c "echo deb https://get.docker.io/ubuntu \
        docker main > /etc/apt/sources.list.d/docker.list"
    
  2. Import the Docker release tool's public key by running the following command:
    $ sudo apt-key adv --keyserver \
        hkp://keyserver.ubuntu.com:80 --recv-keys \
        36A1D7869245C8950F966E92D8576A8BA88D21E9
    
  3. Resynchronize with the package repository by using the command shown here:
    $ sudo apt-get update
    
  4. Install docker and then start the docker service.
    $ sudo apt-get install -y lxc-docker
    

Note

The lxc-docker command will install the Docker image using the name docker.

The Docker community has taken a step forward by hiding these details in an automated install script. This script enables the installation of Docker on most of the popular Linux distributions, either through the curl command or through the wget command, as shown here:

  • For curl command:
    $ sudo curl -sSL https://get.docker.io/ | sh
    
  • For wget command:
    $ sudo wget -qO- https://get.docker.io/ | sh
    

Note

The preceding automated script approach enforces AUFS as the underlying Docker file system. This script probes the AUFS driver, and then installs it automatically if it is not found in the system. In addition, it also conducts some basic tests upon installation for verifying the sanity.

Understanding the Docker setup

It's important to understand Docker's components and their versions, storage, execution drivers, file locations, and so on. Incidentally, the quest for understanding the Docker setup would also reveal whether the installation was successful or not. You can accomplish this by using two docker subcommands, namely docker version, and docker info.

Let's start our docker journey with the docker version subcommand, as shown here:

$ sudo docker version
Client version: 1.5.0
Client API version: 1.17
Go version (client): go1.4.1
Git commit (client): a8a31ef
OS/Arch (client): linux/amd64
Server version: 1.5.0
Server API version: 1.17
Go version (server): go1.4.1
Git commit (server): a8a31ef

Although the docker version subcommand lists many lines of text, as a Docker user, you should know what these following output lines mean:

  • The client version
  • The client API version
  • The server version
  • The server API version

The client and server versions that have been considered here are 1.5.0 and the client API and the server API, versions 1.17.

If we dissect the internals of the docker version subcommand, then it will first list the client-related information that is stored locally. Subsequently, it will make a REST API call to the server over HTTP to obtain the server-related details.

Let's learn more about the Docker environment using the docker info subcommand:

$ sudo docker -D info
Containers: 0
Images: 0
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 0
Execution Driver: native-0.2
Kernel Version: 3.13.0-45-generic
Operating System: Ubuntu 14.04.1 LTS
CPUs: 4
Total Memory: 3.908 GiB
Name: dockerhost
ID: ZNXR:QQSY:IGKJ:ZLYU:G4P7:AXVC:2KAJ:A3Q5:YCRQ:IJD3:7RON:IJ6Y
Debug mode (server): false
Debug mode (client): true
Fds: 10
Goroutines: 14
EventsListeners: 0
Init Path: /usr/bin/docker
Docker Root Dir: /var/lib/docker
WARNING: No swap limit support

As you can see in the output of a freshly installed Docker engine, the number of Containers and Images is invariably nil. The Storage Driver has been set up as aufs, and the directory has been given the /var/lib/docker/aufs location. The Execution Driver has been set to the native mode. This command also lists details, such as the Kernel Version, the Operating System, the number of CPUs, the Total Memory, and Name, the new Docker hostname.

Client server communication

On Linux installations, Docker is usually programmed for carrying out server-client communication by using the Unix socket (/var/run/docker.sock). Docker also has an IANA registered port, which is 2375. However, for security reasons, this port is not enabled by default.

Downloading the first Docker image

Having installed the Docker engine successfully, the next logical step is to download the images from the Docker registry. The Docker registry is an application repository, which hosts a range of applications that vary between basic Linux images and advanced applications. The docker pull subcommand is used for downloading any number of images from the registry. In this section, we will download a tiny version of Linux called the busybox image by using the following command:

$ sudo docker pull busybox
511136ea3c5a: Pull complete
df7546f9f060: Pull complete
ea13149945cb: Pull complete
4986bf8c1536: Pull complete
busybox:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security.
Status: Downloaded newer image for busybox:latest

Once the images have been downloaded, they can be verified by using the docker images subcommand, as shown here:

$ sudo docker images
REPOSITORY    TAG     IMAGE ID         CREATED      VIRTUAL SIZE
busybox       latest  4986bf8c1536     12 weeks ago 2.433 MB

Running the first Docker container

Now, you can start your first Docker container. It is standard practice to start with the basic Hello World! application. In the following example, we will echo Hello World! by using a busybox image, which we have already downloaded, as shown here:

$ sudo docker run busybox echo "Hello World!"
"Hello World!"

Cool, isn't it? You have set up your first Docker container in no time. In the preceding example, the docker run subcommand has been used for creating a container and for printing Hello World! by using the echo command.

Running a Docker container on Amazon Web Services

Amazon Web Services (AWS) announced the availability of Docker containers at the beginning of 2014, as a part of its Elastic Beanstalk offering. At the end of 2014, they revolutionized Docker deployment and provided the users with options shown here for running Docker containers:

  • The Amazon EC2 container service (only available in preview mode at the time of writing this book)
  • Docker deployment by using the Amazon Elastic Beans services

The Amazon EC2 container service lets you start and stop the container-enabled applications with the help of simple API calls. AWS has introduced the concept of a cluster for viewing the state of your containers. You can view the tasks from a centralized service, and it gives you access to many familiar Amazon EC2 features, such as the security groups, the EBS volumes and the IAM roles.

Please note that this service is still not available in the AWS console. You need to install AWS CLI on your machine to deploy, run, and access this service.

The AWS Elastic Beanstalk service supports the following:

  • A single container that supports Elastic Beanstalk by using a console. Currently, it supports the PHP and Python applications.
  • A single container that supports Elastic Beanstalk by using a command line tool called eb. It supports the same PHP and Python applications.
  • Use of multiple container environments by using Elastic beanstalk.

Currently, AWS supports the latest Docker version, which is 1.5.

This section provides a step-by-step process to deploy a sample application on a Docker container running on AWS Elastic Beanstalk.The following are the steps of deployment:

  1. Log in to the AWS Elastic Beanstalk console by using this https://console.aws.amazon.com/elasticbeanstalk/ URL.
  2. Select a region where you want to deploy your application, as shown here:
    Running a Docker container on Amazon Web Services
  3. Select the Docker option, which is in the drop down menu, and then click on Launch Now. The next screen will be shown after a few minutes, as shown here:
    Running a Docker container on Amazon Web Services

    Now, click on the URL that is next to Default-Environment (Default-Environment-pjgerbmmjm.elasticbeanstalk.com), as shown here:

    Running a Docker container on Amazon Web Services

Troubleshooting

Most of the time, you will not encounter any issues when installing Docker. However, unplanned failures might occur. Therefore, it is necessary to discuss prominent troubleshooting techniques and tips. Let's begin by discussing the troubleshooting knowhow in this section. The first tip is that the running status of Docker should be checked by using the following command:

$ sudo service docker status

However, if Docker has been installed by using the Ubuntu package, then you will have to use docker.io as the service name. If the docker service is running, then this command will print the status as start/running along with its process ID.

If you are still experiencing issues with the Docker setup, then you could open the Docker log by using the /var/log/upstart/docker.log file for further investigation.

Summary

Containerization is going to be a dominant and decisive paradigm for the enterprise as well as cloud IT environments in the future because of its hitherto unforeseen automation and acceleration capabilities. There are several mechanisms in place for taking the containerization movement to greater heights. However, Docker has zoomed ahead of everyone in this hot race, and it has successfully decimated the previously-elucidated barriers.

In this chapter, we have exclusively concentrated on the practical side of Docker for giving you a head start in learning about the most promising technology. We have listed the appropriate steps and tips for effortlessly installing the Docker engine in different environments, for leveraging and for building, installing, and running a few sample Docker containers, both in local as well as remote environments. We will dive deep into the world of Docker and dig deeper to extract and share tactically and strategically sound information with you in the ensuing chapters. Please read on to gain the required knowledge about advanced topics, such as container integration, orchestration, management, governance, security, and so on, through the Docker engine. We will also discuss a bevy of third-party tools.

Left arrow icon Right arrow icon

Description

Docker is a next-generation platform for simplifying application containerization life-cycle. Docker allows you to create a robust and resilient environment in which you can generate portable, composable, scalable, and stable application containers. This book is a step-by-step guide that will walk you through the various features of Docker from Docker software installation to the impenetrable security of containers. The book starts off by elucidating the installation procedure for Docker and a few troubleshooting techniques. You will be introduced to the process of downloading Docker images and running them as containers. You'll learn how to run containers as a service (CaaS) and also discover how to share data among containers. Later on, you'll explore how to establish the link between containers and orchestrate containers using Docker Compose. You will also come across relevant details about application testing inside a container. You will discover how to debug a container using the docker exec command and the nsenter tool. Finally, you will learn how to secure your containers with SELinux and other proven methods.

Who is this book for?

If you are an application developer who wants to learn Docker in order to utilize its features for application deployment, then this book is for you. No prior knowledge of Docker is required.

What you will learn

  • Build a Docker image using Dockerfiles
  • Push and publish images on Docker Hub
  • Run your own private Docker Hub and upload images onto it
  • Create and run services inside a container to deploy your applications with ease
  • Share data between the Docker host and containers
  • Orchestrate multiple containers with Docker Compose
  • Test and debug applications inside a Docker container
  • Secure your Docker containers with SELinux

Product Details

Country selected
Publication date, Length, Edition, Language, ISBN-13
Publication date : Jun 29, 2015
Length: 240 pages
Edition : 1st
Language : English
ISBN-13 : 9781784391935
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
OR
Modal Close icon
Payment Processing...
tick Completed

Billing Address

Product Details

Publication date : Jun 29, 2015
Length: 240 pages
Edition : 1st
Language : English
ISBN-13 : 9781784391935
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 S$6 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 S$6 each
Feature tick icon Exclusive print discounts

Frequently bought together


Stars icon
Total S$ 141.98
Practical DevOps
S$66.99
Learning Docker
S$74.99
Total S$ 141.98 Stars icon
Banner background image

Table of Contents

12 Chapters
1. Getting Started with Docker Chevron down icon Chevron up icon
2. Handling Docker Containers Chevron down icon Chevron up icon
3. Building Images Chevron down icon Chevron up icon
4. Publishing Images Chevron down icon Chevron up icon
5. Running Your Private Docker Infrastructure Chevron down icon Chevron up icon
6. Running Services in a Container Chevron down icon Chevron up icon
7. Sharing Data with Containers Chevron down icon Chevron up icon
8. Orchestrating Containers Chevron down icon Chevron up icon
9. Testing with Docker Chevron down icon Chevron up icon
10. Debugging Containers Chevron down icon Chevron up icon
11. Securing Docker Containers Chevron down icon Chevron up icon
Index 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.8
(5 Ratings)
5 star 40%
4 star 20%
3 star 20%
2 star 20%
1 star 0%
Carles Aug 13, 2015
Full star icon Full star icon Full star icon Full star icon Full star icon 5
Either if you are a Developer or a System Administrator, Docker is about to be a must know and must have in your daily toolbox.When a new technology arises and you want to get savvy on it, you can choose between two roads: diving into hundreds of not so well documented and often outdated on-line tutorials or going for the right way and choose a good book like this that guides and helps you in the process. This book it's written with this kind of scenario in mind, going straight to the point that matters, in order to help and speed up your learning curve.On chapter 1 you'll learn what it's docker and how can you benefit from using it on your daily work. If you are a developer who wants to start using this technology the book guides you through a series of chapters that discuses all you need to know to get confident with it (chapters 1 to 4). In the other hand if you are a system administrator, once you know the basis from the 4th first chapters, you only need to keep walking your way across the chapter 5 to get all you need to know to deploy and maintain you own private Docker infrastructure.From that point both developers and System Administrators still have chapters 6 to 11 to get deeper knowledge of more areas of expertise regarding Docker ecosystem.Summarizing, if you buy this book you'll get a very comprehensive and easy way to master Docker technology in a very short time.
Amazon Verified review Amazon
Venkatesh Bhat Aug 15, 2015
Full star icon Full star icon Full star icon Full star icon Full star icon 5
This is a great reference book for cloud developers, from novice to expert. It covers nearly all features with docker container, followed by a hands-on example.It effectively demonstrates the advantages of running multiple containers within a virtual machine instead of spinning up a virtual machine for every application.The book is well written in simple terms and could be easily used for preparing presentation about docker features.Most recommended for container enthusiasts.
Amazon Verified review Amazon
incognito.programmer Aug 13, 2015
Full star icon Full star icon Full star icon Full star icon Empty star icon 4
I truly enjoyed this book. Pretty easy reading for the most part. After reading this book I went from 0 to being able to have an educated conversation with others about docker, and dare I say it maybe get a container or two running! (Haven't done it yet, as I haven't had the time).The only knock from me on this book is the part about security. I felt like that chapter could've been better.
Amazon Verified review Amazon
Fran Oct 11, 2016
Full star icon Full star icon Full star icon Empty star icon Empty star icon 3
Is not bad, direct, no verbose, handy, easy to find all the topics and doubts. Maybe I miss a little some more examples with the docker run command line, because to be honest just appear a couple of times, which is quite annoying, but ok.
Amazon Verified review Amazon
Jascha Casadio Nov 22, 2015
Full star icon Full star icon Empty star icon Empty star icon Empty star icon 2
At the beginning of November 2015, Docker 1.9 was released and with it multi-host networking was introduced. At the same time, Swarm finally reached a stable state that guaranteed it the label of production-ready. The DockerCon that took place in Barcelona was a success, confirming 2015 has been a great year for that blue whale. The strong impact containers had on the IT world is reflected on the one hand by the many companies investing on it, and on the other by the humongous amount of blog posts and books dedicated to it. In a scenario where some must-have title has already been released (see the bottom for suggested titles), Learning Docker places itself as an introductory text that targets professionals and enthusiasts interested in getting a quick taste of this new technology.Docker is one of those technologies that I am particularly interested in. I have been reading a lot about it, from the official documentation up to blogs, passing through that horde of books that made it up to the Amazon’s shelves. Getting through these 200 pages took me less than two days, mainly because none of the topics covered was new to me. But let’s dive into it!The very first thing that I have noticed about this title is the complete lack of background about what Docker is and, mainly, how it works under the hood. I did not find a single paragraph describing what a union mount is. Union mounts are one of the many key concepts of Docker that are not explained at all. Another concept that is not explained at all is, for example, that of the build context. Mind, the term build context appears all over the book, but the reader is not told what it is. The examples that show how to build an image use it without making it clear that the build context is that lone dot at the very end of the command. Concepts such as name spaces and cgroups are, instead, briefly described at the very end of the book, in the chapter dedicated to security.Another thing I did not appreciate much is the quality of the diagrams used to present the concepts being explained. They are colorful yes, but they could have been definitely better. But diagrams apart, do we really need screenshots to guide us through the signup form of the Docker Hub?The examples presented by the authors are very simple. Throughout the book there is not a single real-world example, nothing that gets beyond the containers’ equivalent of an Hello World! in C. Still, this is a very beginners’ book. This also means that topics such as Kubernetes or Mesos are not touched at all.Tying it all up, a very beginners’ book that I did not like but that someone completely new to the subject could find easy to read to get started. Still, the book can’t keep up with the competition: beginners should prefer passing through each and every page of the official documentation and, optionally, Turnbull’s The Docker Book.Suggested readings:The Docker Book: an user friendly, concise introduction to Docker. While it does not cover many advanced topics, it’s by far the best covering the basics.Docker Hands on: while not helpful to beginners, it offers the reader many advanced topics that can’t be found anywhere else.Docker: Up and Running: a very good text that focuses on advanced topics, mainly containers security.As usual, you can find more reviews on my personal blog: http://books.lostinmalloc.com. Feel free to pass by and share your thoughts!
Amazon Verified review Amazon
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.