Chapter 1, Getting Started with Docker on Windows, introduces the Docker runtime and walks
through the options for running Docker on Windows, covering Docker Toolbox for older client
versions, native Docker for Windows 10 and Windows Server 2016, and running Docker hosted
on an Azure VM.
Chapter 2, Packaging and Running Applications as Docker Containers, focuses on the Docker
image: a packaged application with all its dependencies that will run in the same way on any
host that can run Docker. We’ll see how to build Docker images with a Dockerfile for a simple
website, and then run it on Windows.
Chapter 3, Developing Dockerized .NET and .NET Core Applications, shows how we can build
applications with Microsoft technologies that can run on any operating system. .NET Core apps
run equally on Windows (including Nano Server) and Linux, and they are ideally suited for
packaging into a portable Docker container.
Chapter 4, Pushing and Pulling Images from Docker Registries, will look at publishing images we
build in development and using automated builds, hooking Docker Hub into GitHub so new
container image versions are built when code gets pushed. The chapter will also cover running
your own private Docker registry for internal use.
Chapter 5, Adopting Container-First Solution Design, builds on the previous chapters, showing
how the range of high-quality Docker images makes it straightforward to design distributed
solutions, and mixing off-the-shelf images with custom ones. The Windows slant here is that
you can run Windows hosts and manage them in the same way as other machines, but they could
be running Linux software inside a Docker container.
Chapter 6, Organizing Distributed Solutions with Docker Compose, takes the ad hoc distributed
solution from Chapter 5, Adopting Container-First Solution Design and builds it into a deployable
package using Docker Compose--with a Docker Network so containers can communicate using
hostnames. The chapter will also cover the structure of the Docker Compose YAML file and the
runtime for Docker Compose.
Chapter 7, Orchestrating Distributed Solutions with Docker Swarm, covers production-ready
clustering with Docker Swarm, briefly introducing the old Docker Swarm product for
awareness, but focusing on the new Swarm Mode built into Docker from version 1.12. We'll set
up a Swarm running on Windows in Azure, explore how the Routing Mesh works, and look at
service discovery and reliability by deploying the solution from Chapter 6, Organizing
Distributed Solutions with Docker Compose as Swarm services.
Chapter 8, Administering and Monitoring Dockerized Solutions, covers management of
distributed Docker solutions. You’ll see how to set up log shipping so container logs are sent to
a central location, use both free and commercial tools to visualize the containers in a Swarm,
and learn how to do rolling upgrades of a running service.
Chapter 9, Understanding the Security Risks and Benefits of Docker, covers the key aspects of
Docker security: the risks of having multiple containers on one node, the potential for an
attacker to compromise one container and access others, and how to mitigate that. We'll also
look at how Docker improves security, with vulnerability scanning for images built into Docker
Hub and Docker Trusted Registry and flagging security issues with the software inside images.
Lastly, we'll cover built-in security between nodes in Docker Swarm.
Chapter 10, Powering a Continuous Deployment Pipeline with Docker, covers Docker in a
DevOps workflow, where everything is automated. We’ll build out a whole deployment pipeline
using Docker, running GitLab for source control and builds, which will package a new Docker
image when code is pushed, run automated tests, and deploy to a test environment.
Chapter 11, Debugging and Instrumenting Application Containers, looks at troubleshooting
Docker containers during both build and run. We will cover how to structure the Dockerfile so
that infrequently changing layers are preserved and containers are quicker to build, and see the
best way to build up an image. For running containers, we’ll cover viewing the logs, checking
process performance, and connecting to the container for exploratory checks.
Chapter 12, Containerize What You Know: Guidance for Implementing Docker, will look at
containerizing existing software stacks for non-production deployment, and also extracting a
vertical slice from an application that can run in Docker, as a first move toward a microservice