Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
The Docker Book
The Docker Book
0.1 Who is this book for?
0.2 A note about versions
0.3 Credits and Acknowledgments
0.4 Technical Reviewers
0.4.1 Scott Collier
0.4.2 John Ferlito
0.4.3 Pris Nasrat
0.5 Technical Illustrator
0.6 Proofreader
0.7 Author
0.8 Conventions in the book
0.9 Code and Examples
0.10 Colophon
0.11 Errata
0.12 Version
1 Introduction
1.1 Introducing Docker
1.1.1 An easy and lightweight way to model reality
1.1.2 A logical segregation of duties
1.1.3 Fast, efficient development life cycle
1.1.4 Encourages service oriented architecture
1.2 Docker components
1.2.1 Docker client and server
1.2.2 Docker images
1.2.3 Registries
1.2.4 Containers
1.2.5 Compose and Swarm
1.3 What can you use Docker for?
1.4 Docker with configuration management
1.5 Docker's technical components
1.6 What's in the book?
1.7 Docker resources
2 Installing Docker
2.1 Requirements
2.2 Installing on Ubuntu and Debian
2.2.1 Checking for prerequisites
2.2.2 Installing Docker
2.2.3 Docker and UFW
2.3 Installing on Red Hat and family
2.3.1 Checking for prerequisites
2.3.2 Installing Docker
2.3.3 Starting the Docker daemon on the Red Hat family
2.4 Docker for Mac
2.4.1 Installing Docker for Mac
2.4.2 Testing Docker for Mac
2.5 Docker for Windows installation
2.5.1 Installing Docker for Windows
2.5.2 Testing Docker for Windows
2.6 Using Docker on OSX and Windows with this book
2.7 Docker installation script
2.8 Binary installation
2.9 The Docker daemon
2.9.1 Configuring the Docker daemon
2.9.2 Checking that the Docker daemon is running
2.10 Upgrading Docker
2.11 Docker user interfaces
2.12 Summary
3 Getting Started with Docker
3.1 Ensuring Docker is ready
3.2 Running our first container
3.3 Working with our first container
3.4 Container naming
3.5 Starting a stopped container
3.6 Attaching to a container
3.7 Creating daemonized containers
3.8 Seeing what's happening inside our container
3.9 Docker log drivers
3.10 Inspecting the container's processes
3.11 Docker statistics
3.12 Running a process inside an already running container
3.13 Stopping a daemonized container
3.14 Automatic container restarts
3.15 Finding out more about our container
3.16 Deleting a container
3.17 Summary
4 Working with Docker images and repositories
4.1 What is a Docker image?
4.2 Listing Docker images
4.3 Pulling images
4.4 Searching for images
4.5 Building our own images
4.5.1 Creating a Docker Hub account
4.5.2 Using Docker commit to create images
4.5.3 Building images with a Dockerfile
4.5.4 Building the image from our Dockerfile
4.5.5 What happens if an instruction fails?
4.5.6 Dockerfiles and the build cache
4.5.7 Using the build cache for templating
4.5.8 Viewing our new image
4.5.9 Launching a container from our new image
4.5.10 Dockerfile instructions
4.6 Pushing images to the Docker Hub
4.6.1 Automated Builds
4.7 Deleting an image
4.8 Running your own Docker registry
4.8.1 Running a registry from a container
4.8.2 Testing the new registry
4.9 Alternative Indexes
4.9.1 Quay
4.10 Summary
5 Testing with Docker
5.1 Using Docker to test a static website
5.1.1 An initial Dockerfile for the Sample website
5.1.2 Building our Sample website and Nginx image
5.1.3 Building containers from our Sample website and Nginx image
5.1.4 Editing our website
5.2 Using Docker to build and test a web application
5.2.1 Building our Sinatra application
5.2.2 Creating our Sinatra container
5.2.3 Extending our Sinatra application to use Redis
5.2.4 Connecting our Sinatra application to the Redis container
5.2.5 Docker internal networking
5.2.6 Docker networking
5.2.7 Connecting containers summary
5.3 Using Docker for continuous integration
5.3.1 Build a Jenkins and Docker server
5.3.2 Create a new Jenkins job
5.3.3 Running our Jenkins job
5.3.4 Next steps with our Jenkins job
5.3.5 Summary of our Jenkins setup
5.4 Multi-configuration Jenkins
5.4.1 Create a multi-configuration job
5.4.2 Testing our multi-configuration job
5.4.3 Summary of our multi-configuration Jenkins
5.5 Other alternatives
5.5.1 Drone
5.5.2 Shippable
5.6 Summary
6 Building services with Docker
6.1 Building our first application
6.1.1 The Jekyll base image
6.1.2 Building the Jekyll base image
6.1.3 The Apache image
6.1.4 Building the Jekyll Apache image
6.1.5 Launching our Jekyll site
6.1.6 Updating our Jekyll site
6.1.7 Backing up our Jekyll volume
6.1.8 Extending our Jekyll website example
6.2 Building a Java application server with Docker
6.2.1 A WAR file fetcher
6.2.2 Fetching a WAR file
6.2.3 Our Tomcat 7 application server
6.2.4 Running our WAR file
6.2.5 Building on top of our Tomcat application server
6.3 A multi-container application stack
6.3.1 The Node.js image
6.3.2 The Redis base image
6.3.3 The Redis primary image
6.3.4 The Redis replica image
6.3.5 Creating our Redis back-end cluster
6.3.6 Creating our Node container
6.3.7 Capturing our application logs
6.3.8 Summary of our Node stack
6.4 Managing Docker containers without SSH
6.5 Summary
7 Docker Orchestration and Service Discovery
7.1 Docker Compose
7.1.1 Installing Docker Compose
7.1.2 Getting our sample application
7.1.3 The docker-compose.yml file
7.1.4 Running Compose
7.1.5 Using Compose
7.1.6 Compose in summary
7.2 Consul, Service Discovery and Docker
7.2.1 Building a Consul image
7.2.2 Testing a Consul container locally
7.2.3 Running a Consul cluster in Docker
7.2.4 Starting the Consul bootstrap node
7.2.5 Starting the remaining nodes
7.2.6 Running a distributed service with Consul in Docker
7.3 Docker Swarm
7.3.1 Understanding the Swarm
7.3.2 Installing Swarm
7.3.3 Setting up a Swarm
7.3.4 Running a service on your Swarm
7.4 Orchestration alternatives and components
7.4.1 Fleet and etcd
7.4.2 Kubernetes
7.4.3 Apache Mesos
7.4.4 Helios
7.4.5 Centurion
7.5 Summary
8 Using the Docker API
8.1 The Docker APIs
8.2 First steps with the Engine API
8.3 Testing the Docker Engine API
8.3.1 Managing images with the API
8.3.2 Managing containers with the API
8.4 Improving the TProv application
8.5 Authenticating the Docker Engine API
8.5.1 Create a Certificate Authority
8.5.2 Create a server certificate signing request and key
8.5.3 Configuring the Docker daemon
8.5.4 Creating a client certificate and key
8.5.5 Configuring our Docker client for authentication
8.6 Summary
9 Getting help and extending Docker
9.1 Getting help
9.1.1 The Docker forums
9.1.2 Docker on IRC
9.1.3 Docker on GitHub
9.2 Reporting issues for Docker
9.3 Setting up a build environment
9.3.1 Install Docker
9.3.2 Install source and build tools
9.3.3 Check out the source
9.3.4 Contributing to the documentation
9.3.5 Build the environment
9.3.6 Running the tests
9.3.7 Use Docker inside our development environment
9.3.8 Submitting a pull request
9.3.9 Merge approval and maintainers
9.4 Summary
← Prev
Back
Next →
← Prev
Back
Next →