One of the major challenges while creating an application is adapting your application to run smoothly on all of the plethora of operating systems available. Docker is an extremely efficient technology that allows you to wrap all your code along with its supporting files into a single bundle; it also guarantees that your application will behave in the same way on any host powered by Docker. You can also easily reuse existing Docker containers or create and publish your own. Unlike Virtual Machines, Docker containers are lightweight and more efficient.
Beginning Docker starts with the fundamentals of Docker—explaining how it works, how to set it up, and how to get started on leveraging the benefits of this technology. The course goes on to cover more advanced features and shows you how to create and share your own Docker images.
You will learn how to install Docker on your own machine, then how to manage it effectively, and then progress to creating and publishing your very own application. You will then learn a bit more about Docker Containers; built-in features and commands such as volumes, mounts, ports, and linking and constraining containers; before diving into running a web application.
Docker has functionality such as the Docker web API to handle complex automation processes which will be explained in detail. You will also learn how to use the Docker Hub to fetch and share containers, before running through the creation of your own Docker powered mini-Heroku
Beginning Docker covers everything required to get you up and running with Docker, with detailed real-world examples and helpful tips to make sure you get the most from it.
About The Authors
Donald Simpson is an Information Technology Consultant with over 15 years of experience in programming, Build Management, and process automation. He has worked with a wide variety of multinational companies to develop bespoke automated solutions using Docker and Virtualisation technologies.
Jeff Lindsay is an independent, design-minded technologist who has been writing and designing software professionally for over 15 years. He has worked with Twilio, DotCloud/Docker, Transcriptic, Piston Cloud, CommerceNet, NASA Ames, and others to build prototypes, products, and platforms.
He also has a large open source portfolio, lots of speaking experience, and a history of starting communities and cultural institutions. These include SuperHappyDevHouse and Hacker Dojo.
His Specialities include systems thinking, experience design, platforms, tools, prototyping, python, ruby, distributed systems, messaging, information architecture, usability, domain modeling, systems infrastructure, API integrations and design, web development, and cloud stuff.
See how to get your own Docker running using a local virtual machine that is controlled by Vagrant.
Learn the difference between Docker containers and traditional virtual machines.
Get a high-level overview of the objects Docker works with and how they are used.
We have Docker and want to run a command in an isolated container, so we use "docker run" to work with commands in containers.
You want to manage containers once you've started creating them. You can list, inspect, view log, stop, and delete them with basic Docker commands.
We want to make an image that has a package (sshd) already installed and configured. So, we'll use Docker commands to make a new image from an existing image.
Once you've made a container you like, you would want to share it with others or make it easy for you to install on other machines. So, you have to push the container image to the Docker index.
Making containers for everything we want to use in containers is difficult, so we can use ready-made containers. Find and use container images using the Docker index and the Docker ecosystem.
We want to quickly and consistently produce and reproduce a container image, so we use a Dockerfile to define a container.
We are making an image that uses a versioned configuration file, so we can add it to the container in the build process.
We want to simplify the running process of our container, so we add metadata and defaults to the Dockerfile.
You have a container that you want to use but with some variations, so you will build a new container based on the existing image.
We want others to trust our image in the Docker index, so we will set up trusted builds to automatically build from our GitHub repository.
Using the Docker run command to improve performance, and exploring some of the features it provides us when running containerized commands.
Discover how to use docker run to override some of the defaults that come with containers, which are usually specified from their Dockerfiles.
Learn about Docker volumes and mounts and how we can use docker run to configure them for our containers.
Learn about ports and networking with Docker and Docker Containers.
Similar to how we can"share" data volumes across containers, we can also "share" ports across containers so that they can communicate with each other.
Although Docker is great for running backing services and infrastructure, its real value comes from shipping your application. Unlike the supporting infrastructure, your application will be updated and shipped quite frequently. Docker can make this process much easier. In order to demonstrate this, we’re going to build a simple web application to deploy with Docker.
Previously, we made a simple "Hello World" web application that uses Redis to increment a counter with every request. Now, we’re going to take this application and "Dockerize" it.
Work through the process that is required to set up an application server to act as our production server to deploy on.
Demonstrate how to effectively ship a container to another machine.
We show how we can streamline the process and create an easy deployment workflow.
Demonstrate how we can expose control of containers to other containers.
Explain the limitations of the in-built logging functionality.
Building our own Docker-powered mini-Heroku platform-as-a-service using Dokku.
Explore Docker pattern called ambassador.
Packt has been committed to developer learning since 2004. A lot has changed in software since then - but Packt has remained responsive to these changes, continuing to look forward at the trends and tools defining the way we work and live. And how to put them to work.
With an extensive library of content - more than 4000 books and video courses -Packt's mission is to help developers stay relevant in a rapidly changing world. From new web frameworks and programming languages, to cutting edge data analytics, and DevOps, Packt takes software professionals in every field to what's important to them now.
From skills that will help you to develop and future proof your career to immediate solutions to every day tech challenges, Packt is a go-to resource to make you a better, smarter developer.
Packt Udemy courses continue this tradition, bringing you comprehensive yet concise video courses straight from the experts.